以下の関数createTuple
をpointfreeで表現することはできますか?あなたが利用可能であるだけで何使ってcreateTuple
関数を記述することはできませんのでタプルポイントを作成する
let createTuple = fun v -> (v, v*2)
createTuple 2 |> printfn "%A" // (2,4)
以下の関数createTuple
をpointfreeで表現することはできますか?あなたが利用可能であるだけで何使ってcreateTuple
関数を記述することはできませんのでタプルポイントを作成する
let createTuple = fun v -> (v, v*2)
createTuple 2 |> printfn "%A" // (2,4)
F#のライブラリは、(それはF#のを書いて、特に慣用的な方法ではない主な理由は)ポイントフリースタイルでコードを書くために多くの機能を提供していませんコアライブラリ。
あなた本当にはこれをやってみたかった場合、あなたはタプルを操作するためのヘルパーコンビネータのカップルを定義することができます。
:これらで/// Duplicates any given value & returns a tuple with two copies of it
let dup a = a, a
/// Transforms the first element using given function
let mapFst f (a, b) = (f a, b)
/// Transforms the second element (not needed here, but adding for symmetry)
let mapSnd f (a, b) = (a, f b)
を、あなたはポイントのない方法であなたの機能を実装することができ
let createTuple = dup >> mapSnd ((*) 2)
これは、お使いの機能と同じことを行います。私はここで何が起こっているのかを解読することは非常に難しいと思うし、実際にそのコードを書くことは決してないだろうが、それは別の問題である。
まさに私が欲しかったこと、ありがとう! – rickythefox
Haskel/Elmのような '(、)'演算子を意味しますか? –