この関数の型を導出する必要があります。
func x = map -1 x
そして、ヒントを使用してラムダ式に変更する方法をすでに見つけました。
func = \x -> (map) - (1 x)
そのように表現すれば問題なく、オリジナルと同じタイプになりますが、なぜこのようにグループ化されているのかわかりません。誰かがそれを説明できますか?
たとえば、次のようにしないのはなぜですか。
func = \x -> (map - 1) x
または似たようなもの。
役に立たない関数などであることはわかっていますが、関数を変更することはできません。その型を派生させるだけです。
この関数をファイルに記述すると、たとえば、test.hs がインタープリターでfunc x = map -1 x
使用:t func
され、次のように応答されます。
func :: (Num (t -> (a -> b) -> [a] -> [b]),
Num ((a -> b) -> [a] -> [b])) =>
t -> (a -> b) -> [a] -> [b]