積ん読してあった「ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門」を読んだんだけど、 その中にポイントフリースタイルというのが書いてあったので、 同じような事がJavaScriptでもできないか試してみる。 本書によると、ポイントフリースタイルっていうのは関数で関数を 定義しながらプログラミングをするコーディングスタイルの事だそうだ。 要は関数合成や引数の部分適用などにより高階関数を返すような関数を定義し、 それを呼び合いながらプログラムを書こうってこと。 JavaScriptは高階関数を扱えるので近い事はできそうだ。 引数の部分適用 まずは関数が引数の部分適用をできるようにする。つまりカリー化。 よくある、curry関数に関数と引数を渡す事で部分適用された関数を返すという方法だと 再度、部分適用する時に何度もcurry関数を呼び出す必要がある。 こんな風に
Python のデコレータはなかなか面白い機能だと思ったので、試しにカリー化を実装してみました。 @curry def f(x,y,z): ... などと書くと、カリー化されたfが定義されます。まぁ functools.partial があれば全然必要無いシロモノではあるのですが。 複数まとめて関数適用するとき f(x)(y)(z) とか気持ち悪いので、f.apply(x,y,z) みたいに普通っぽく呼び出せるようにもなっています。 可変長引数とは相性悪いです(*付き引数=引数1個ぶんとして扱われます)。 def arity_of(f): return len(f.func_code.co_varnames) class curry: def __init__(self, f, n=None, args=None): self.func = f self.arity = n if n !=
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く