一つは、機能を定義している明確ではない入力します。Haskellは次のように私がしようとしています演習の
twice f x = f (f x)
を私は二度のタイプを印刷するとき、私は以下を参照してください。私は理解して
Main> :t twice
twice :: (a -> a) -> a -> a
わかりませんここに出力します。したがって、twice
はタイプ関数(タイプa -> a
)の入力を受け取ります。これは正しいです?その場合、f
はどのように機能(a -> a
)のタイプであると評価されましたか?そして返品のタイプはtwice
ここには何ですか?
ああ:私たちはこれを与え
。だから、どのように 'f'の型がa-> a型であると評価されましたか。通訳者はそれをどのように推論しましたか?私はどこにでも 'f'を定義していない。 – patronus
誰かが似たような質問をしているようです:https://stackoverflow.com/questions/42243902/haskell-function-type-clarification?rq=1 – patronus