4

私が見逃しているのは、関数の最初の引数ではなく、2 番目の引数を部分的に適用する機能です。これは、関数をマップなどに渡したい場合に特に便利ですが、毎回ラムダを記述する必要はありません。

私はこれのために私自身の関数を書きました(以下の定義、実際にこれのための組み込み関数がなく、他の誰かが興味を持っていた場合に備えて)、これのためのプレリュードにすでに何かが存在するかどうかを本当に知りたいです私は再発明するよりも再利用したいので、イディオムです。

これが私の定義と簡単な例です。

bind2nd :: (a -> b -> c) -> b -> a -> c
bind2nd f b = \a -> f a b

foo :: Int -> Bool -> String
foo n b | b = show n
        | otherwise = "blabla"

alwaysN :: Int -> String
alwaysN = bind2nd foo True
4

1 に答える 1

15

と呼ばれていflipます。

例:

Prelude> flip (-) 2 3
1

今後の参考のために、質問の型シグネチャ、つまり(a -> b -> c) -> b -> a -> cをHoogleで検索するだけで見つけることができます。:-)

于 2009-01-30T20:37:56.853 に答える