2013-10-04 10 views
8

のは、我々はこの時点フリー機能を持っているとしましょうか? I.私はマップ、constとフリップ関数が何であるか知っています。しかし、このようにまとめても意味がありません。この関数の中ではどういうことが起こっていますか? 毎回同じことを返すようですが、どうしてですか?f1 =フリップコンスタントマップ。この機能はどのように機能しますか?</p> <pre><code>f1 = flip const map </code></pre> <p>私は正確にどのようにそれが動作しませんし、行うことになっているかについて無知だ:

答えて

5

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

4

map以外のものを入れても大した問題ではありません。式flip constは、constの引数を反転させるので、常に最初の引数を返すのではなく、2番目の引数を返します。これは、f1 = flip const undefinedを再定義することでテストできます。これにより、undefinedが評価されても例外が発生しますが、同じ動作をすることがわかります。本質的には、flip const undefined = id

14

は、それは常にあなたがそれを与えるものを返す理由ですビット

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

によりビット、のは、この関数が何をするか見てみましょう!

関連する問題

 関連する問題