Haskellのフルストップまたはピリオドまたはドット(。)はどういう意味ですか?

StackOverflow https://stackoverflow.com/questions/2486564

質問

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)
役に立ちましたか?

解決

f(g(x))

数学で: f ∘ g (x)

Haskell: ( f . g ) (x)

他のヒント

それは関数の構成を意味します。見る この質問.

また、 f.g.h x 同等ではありません (f.g.h) x, 、それはと解釈されているからです f.g.(h x) (HX)が関数を返しない限り、TypeCheckはありません。

これは、$オペレーターが役立つ場所です: f.g.h $ x Xをパラメーターから変えます h 式全体のパラメーターであること。そして、それは同等になります f(g(h x)) そして、パイプは再び機能します。

. 関数構成の高次関数です。

Prelude> :type (.)
(.) :: (b -> c) -> (a -> b) -> a -> c
Prelude> (*2) . (+1) $ 1
4
Prelude> ((*2) . (+1)) 1
4

「期間は関数構成演算子です。一般的に、fとgは関数であり、(f。g)xはf(gx)と同じを意味します。言い換えれば、期間は関数の結果を取るために使用されます右側では、左側の関数のパラメーターとしてフィードし、この計算を表す新しい関数を返します。」

ソース: Google検索「Haskell Periodoperator」

それは関数の構成です: リンク

関数構成 (ページはかなり長いです、検索を使用してください)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top