2

この関数のタイプはですT -> (T -> U) -> U。Haskellでは、のようなものになると思い($ . flip)ます。

または、オブジェクト指向の観点から(これは私が見ている方法です):

type T {
    U myFunction(f: T -> U) {
        return f(this);
    }
}

私はメモでそれを「into」と呼んでおり->、演算子として単一の矢印()を使用しています。これは関数に似ていmapますが、スカラーの場合:

       a.into f =  f(a)
[a, b, c].map f = [f(a), f(b), f(c)]

実用的なアプリケーションの例:

42 -> Math.sqrt
foo.bar.into(doSomething).baz.into(doSomethingElse).xyzzy
(rather than doSomethingElse(doSomething(foo.bar).baz).xyzzy)
4

1 に答える 1

0

F#にはこの機能があるようです。関数には名前が付いていないようですが、演算子はパイプライン演算子として知られています。http://msdn.microsoft.com/en-us/library/dd233229.aspx

let result = 100 |> function1 |> function2

Haskellではですflip id。data-aviaryと呼ばれる特定のファセットパッケージは、それをとして定義しますthrushHaskell $演算子の逆はありますか?

于 2012-06-26T01:45:37.793 に答える