Haskellのフルストップまたはピリオドまたはドット(。)はどういう意味ですか?
-
21-09-2019 - |
質問
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)と同じを意味します。言い換えれば、期間は関数の結果を取るために使用されます右側では、左側の関数のパラメーターとしてフィードし、この計算を表す新しい関数を返します。」
それは関数の構成です: リンク
関数構成 (ページはかなり長いです、検索を使用してください)
所属していません StackOverflow