拙作記事『カリー化チートシート』について,対応言語や補足追記が増えるにつれ,チートシートというよりは解説記事と化してきたので,あらためて記述例一覧版を作成.しばらくしたら,元記事タイトルを『カリー化記述まとめ』に変えて,こちらを『カリー化チートシート』にするかも.【2020-09-17追記】しました.
#記述例一覧
複数の記法が可能な言語は,最新バージョン&カリー化メソッド未使用の場合の,最も短い書き方のみを掲載.その他の記法やバージョン等による違いは元記事を参照.
言語 | (λxy.(真, if x>y; and 偽, if x≦y)) 10 20 |
---|---|
Haskell | (\x y -> x > y) 10 20 |
Scheme | (((lambda (x) (lambda (y) (> x y))) 10) 20) |
Python | (lambda x: lambda y: x > y)(10)(20) |
Ruby | -> x { -> y { x > y } }[10][20] |
JavaScript | (x => y => x > y)(10)(20) |
Scala | ((x: Int) => (y: Int) => x > y)(10)(20) |
Perl | sub { my $x = shift; return sub { my $y = shift; return $x > $y }; }->(10)->(20) |
Go言語 | func(x int) func(int) bool { return func(y int) bool { return (x > y) } }(10)(20) |
PHP | (fn($x) => fn($y) => $x > $y)(10)(20) |
Standard ML | (fn x => fn y => x > y) 10 20 |
Julia | (x -> y -> x > y)(10)(20) |
Emacs Lisp, Common Lisp | (funcall (funcall (lambda (x) (lambda (y) (> x y))) 10) 20) |
R言語 | (function(x) { function(y) { x > y } })(10)(20) |
C++ | [] (int x) { return [x] (int y) { return x > y; }; }(10)(20) |
Java | ((Function<Integer, Function<Integer, Boolean>>) x -> y -> x > y).apply(10).apply(20) |
ErLang | fun(_x) -> fun(_y) -> _x > _y end (20) end (10). |
Clojure | (((fn [x] (fn [y] (> x y))) 10) 20) |
#更新履歴
- 2020-12-09:Clojureの例を追加
- 2020-12-02:Erlangの例を追加
- 2020-12-01:Standard MLの例を追加
- 2020-09-29:Javaの例について引数即時適用の記述に修正(コメントより)
- 2020-09-17:記事タイトルから『記述例一覧版』を削除し,元記事を『記述まとめ』に変更
- 2020-08-28:C++,Javaの例を追加
- 2020-08-14:大きい方の値ではなく真偽値を返す記述例に変更
- 2020-08-14:初版公開(Haskell,Scheme,Python,Ruby,JavaScript,Scala,Perl,Go言語,PHP,Julia,Emacs Lisp/Common Lisp,R言語)