10

このポイントフリー関数があるとしましょう:

f1 = flip const map

それがどのように機能し、何をするべきなのか、私にはわかりません。つまり、マップ、const、およびフリップ関数が何であるかを知っています。しかし、このようにそれらをまとめることは、私には意味がありません。この関数内で正確に何が起こっているのでしょうか? 毎回渡すのと同じものを返すようですが...なぜですか?

4

3 に答える 3

15

この関数が何をするのか、少しずつ見ていきましょう

flip const map x = (flip const) map x
                 = const x map
                 = x

そのため、与えられたものは常に返されます。

于 2013-10-04T16:39:27.793 に答える
6

Haskell のすべての関数は引数を 1 つしか取りませんが、別の関数を返すことで複数の引数を取ることをシミュレートすることに注意してください。と書くflip const mapこともできます(flip const) mapconst通常、2 番目の引数を無視して、最初の引数を返します。flipは引数の順序を逆にするためflip const、最初の引数を無視して 2 番目の引数を返します。したがってmap、無視され、常に引数を返す関数が返されます。

于 2013-10-04T14:31:09.797 に答える