2017-09-02 6 views
1

私はpurescriptへの初心者です。これは私が学んでいる本Leanpub-purescriptです。私はフリップ機能が何であるか理解できません。それは概念を交換するのに似ていますか?フリップ機能は何をしますか?

> :type flip 
forall a b c. (a -> b -> c) -> b -> a -> c 

これは、a value goes to b, then b to a, then c is itself??を意味する。私はこれに打たれました。フリップコンセプトを説明し、私が参照している本がうまくいかない場合は、他の資料を提案してください。

答えて

3

flip関数は、2引数の関数の引数の順序を逆にします。シンプルsubtract機能を考えてみましょう。また、引数の型が異なる機能で動作します

(flip subtract) 4 3 
-- 3 - 4 = -1 

subtract :: Int -> Int -> Int 
subtract a b = a - b 

subtract 4 3 
-- 4 - 3 = 1 

flipsubtract機能で呼び出された場合、それはから減算されている番号に変更

showIntAndString :: Int -> String -> String 
showIntAndString int string = (show int) <> string 

showIntAndString 4 "asdf" 
-- "4asdf" 

(flip showIntAndString) "asdf" 4 
-- "4asdf" 

あなたがもっと理にかなっている場合は、2つの引数をとる関数をarとして受け入れる関数としてflipを見てみてくださいgumentその結果、他の2つの引数の関数を返す:あなたは、部分的に機能を適用したいときflipの利用例

flip :: forall a b c. 
    (a -> b -> c) -- takes a function 
    -> (b -> a -> c) -- returns a function with flipped arguments 

一つは、しかし、あなたが部分的に適用する引数が二位です。次に元の関数flipを呼び出し、部分的に結果関数を適用することができます。

+0

ありがとうございます。クリアされたようだ。しかし、 'showIntAndString int string =(show int)<> string'行の'(show int) 'の意味は何ですか? – Previn

+3

ようこそ。 'show'はその引数の文字列表現を返します。他の言語の 'toString()'とよく似ています。例えば。 'show 123'は' '123" 'と同じです。 PureScriptの関数と型について詳しくは、[Pursuit](https://pursuit.purescript.org)を参照してください。 'show'のための[こちらのドキュメントはこちら](https://pursuit.purescript.org/packages/purescript-prelude/3.1.0/docs/Data.Show#v:show) – Houndolon

関連する問題