LoginSignup
0
4

More than 3 years have passed since last update.

カリー化チートシート

Last updated at Posted at 2020-08-13

拙作記事『カリー化チートシート』について,対応言語や補足追記が増えるにつれ,チートシートというよりは解説記事と化してきたので,あらためて記述例一覧版を作成.しばらくしたら,元記事タイトルを『カリー化記述まとめ』に変えて,こちらを『カリー化チートシート』にするかも.【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言語)
0
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4