2013-05-18 21 views
8

ハスケルでは、flip関数:flip f x y = f y xがあります。この関数は本質的に関数をとり、2つの引数が入れ替わった以外は同じ関数を返します。私はOCamlに対応するものがあるのだろうかと思います。なぜなら、それを見つけられず、毎回書き直したくないからです。OCaml標準ライブラリに `flip`関数がありますか?

乾杯、一般FP配管のため、このような

+0

(http://search.ocaml.jp/?q=%28%27a+-%3E+%27b+-%3E+%27c%29+-% [HoogleのOCamlの同等は何かを見つけるように見えることはありません] 3E +%27b + - %3E +%27a + - %3E +%27c)。 – hammar

答えて

12

多くの機能は、標準のOCamlライブラリで定義されていません。私はいつもそれらを見逃している。

しかし、今日では、これらの欠けている機能の大部分またはすべてを提供する優れたOCamlライブラリがあります。 OCaml Batteries IncludedプロジェクトではBatPervasivesモジュールにflipが定義されています。 Jane Street Coreプロジェクトは、Fnモジュールにflipと定義しています。

+2

コアで機能は 'Fn.flip'です – rgrinberg

+0

ありがとうございます。コアで定義されていることは幸いです。 – tfboy

2

痛みが多少ラベル付き引数によって軽減されます。

# let f ~x ~y = x - y;; 
val f : x:int -> y:int -> int = <fun> 
# f ~y:5;; 
- : x:int -> int = <fun> 
# f ~x:6;; 
- : y:int -> int = <fun> 

したがって、あなたが(いくつかのコードが読みやすくなり主張)ラベルを書き留めるために喜んでいる場合、あなたは行動にあなたを得ることができるかもしれません欲しいです。もちろん状況によって異なります。

+1

'flip'は、部分的なアプリケーションのコンテキストで実際より有用です。単純な例では、2数を減算する機能であろう: 'フリップ( - )2' – YuriAlbuquerque

関連する問題