Home About Contact
関数型オブジェクト指向プロラミングを Golang に翻訳する

関数型オブジェクト指向プロラミングを JavaScript に翻訳する というエントリーを2年前に書いた。 Haskell のオブジェクト指向的なコードを JavaScript に書き直したエントリーだが、今読み返してもいまいちピンとこない。 ならば Golang で書き直してみよう。 Golang であれば、JavaScript と違って型を明示的にコード中にかけるので、わかりやすくなるのではないか?

» Read More
Golang や Kotlin で関数の型を定義する

Go言語では first class functions とやらで、関数はファーストクラスオブジェクトであり値のように使うことができる。 そして、この関数の型(どんな型を引数にとってどんな型を返す、という情報)に名前をつけることができる。

» Read More
ラムダ(式)を javascript と kotlin script と golang で使う

パーサーコンビネータについて調べていて、 そもそもその元になる概念としてコンビネータがあることを知る(いまさら?!)。 つまり、パーサーコンビネータはいろいろあるコンビネータの中の一つ。 そして、いろいろあるコンビネータの中でもっとも有名なのが Y コンビネータとか Z コンビネータらしい。 そして、コンビネータを構成するパーツの一つがラムダ(式)とか無名関数であると。

名前付き関数はいつも使っていて、そして名前無し関数(無名関数)も結構使う。 では、ラムダ(式) と無名関数ってイコールじゃないの? と思って調べるもよくわからない。

Wikipedia によると: 「プログラミング言語における無名関数(英語: anonymous functionあるいはnameless function)とは,名前付けされずに定義された関数のことである.無名関数を表現するための方法には様々なものがあるが,近年主流となっているのはラムダ式による記法である.」 ということで、ラムダ式(という概念)をプログラム言語で表現するときに使うのが無名関数(または匿名関数)と考えて問題なさそう。

パーサーコンビネータや Yコンビネータを理解するための最初の一歩としてラムダ式を把握する。

» Read More
MS Excel で 空の行を詰めて別の列に表示する方法

たとえばB列にポケモンの名前が入っているとする。 ただし、途中に空白行があるので、そこは詰めてD列に表示するにはどうしたらよいか?という問題。

ポケモン名リスト1

この問題の回答を検索してみるとこれらしい。

配列数式と index, small, row などの関数を組み合わせることで実現できるらしい。 なるほどわからん。

» Read More
ExtendScript で 指定したフォルダ以下のフォルダ全部を探すには その1

指定したフォルダ以下のサブフォルダ、サブサブフォルダ...を含めてすべてのフォルダを探す、というコードを書いてみた。 ExtendScript では each や map, reduce などが使えないので、実装は少し面倒でした。

» Read More
再帰を使って木構造をリストに変換する JavaScript

Adobe XD の ドキュメント構造は scenegraph.root をルートノードとした木構造として表現されています。
これらのノードをスクリプトから操作するには、この木構造をたどる必要があります。 いちいちたどるのは面倒なので、木構造からリストに変換することを考えることにします。

» Read More
Excelで 行を一行おきに合計したい、つまり奇数行または偶数行のみの値を足し合わせたい件

この問題をググってみると sumproduct 関数を使え、ということらしい。 あちこち見たのですが、結局一番わかりやすかったのが オフィシャルページの説明 SUMPRODUCT function です。

» Read More
関数型オブジェクト指向プロラミングを JavaScript に翻訳する

入門 Haskell プログラミング」の Section 10 に Haskell で オブジェクト指向的なコード例が出ていた。 興味深い。ただ、Haskell のコードを見てもさっぱり意味がわからないので、JavaScript に変換してみた。 なお、本に出ているコードからは多少変えています。

» Read More