25

Google が構文の検索をもっと上手にできたらいいのにと思います。

decades         :: (RealFrac a) => a -> a -> [a] -> Array Int Int
decades a b     =  hist (0,9) . map decade
                   where decade x = floor ((x - a) * s)
                         s        = 10 / (b - a)
4

6 に答える 6

48

f(g(x))

数学で:f ∘ g (x)

ハスケルで: ( f . g ) (x)

于 2010-03-21T09:52:35.833 に答える
18

関数合成という意味です。この質問を参照してください。

は(hx) が関数を返さない限り型チェックしないと解釈されるため、 は とf.g.h x同等ではないことにも注意してください。(f.g.h) xf.g.(h x)

ここで $ 演算子が役に立ちます: f.g.h $ xx をパラメーターhから式全体のパラメーターに変えます。そして、それは同等にf(g(h x))なり、パイプは再び機能します。

于 2010-03-21T09:47:22.357 に答える
13

.関数合成の高階関数です。

Prelude> :type (.)
(.) :: (b -> c) -> (a -> b) -> a -> c
Prelude> (*2) . (+1) $ 1
4
Prelude> ((*2) . (+1)) 1
4
于 2010-03-21T09:48:51.223 に答える
4

「ピリオドは関数合成演算子です。一般的に言えば、f と g が関数の場合、(f . g) x は f (gx) と同じ意味です。つまり、ピリオドは関数から結果を取得するために使用されます。右側の関数にパラメーターとして入力し、この計算を表す新しい関数を返します。」

出典: Google 検索「haskell 期間演算子」

于 2010-03-21T09:47:31.820 に答える
2

関数合成です:リンク

于 2010-03-21T09:47:10.657 に答える
1

機能構成(ページがかなり長いので検索を利用)

于 2010-03-21T09:48:29.953 に答える