私はハスケルを初めて使いました。私は言語の概念のいくつかを理解するのに少し苦労しています。haskellでの式のタイプ
私は、次の式があります。
\f x → (f x,f 1)
そして、私の理解から、私はそれを言うことができます。
最初に、私は本当に理由は私が何であるかをFと言うことはできません情報がない、 なので、私は何でもできると言う。次に、(FX)のアプリケーションから判断
それはタイプA-の 機能だと言うことができ> X ::そして(1 F)のアプリケーションから判断
私はそれを言うことができるここで、B Integer型のものであり、したがって、xは同じ型である
式全体が型であるなぜ、私は本当に理解していない:
(Integer → b) → Integer → (b, b)
私は少し推測を持っていると私はそれを言うつもりです:
(Integer → b)
は、関数fのタイプなので、それはb型
Integer
を受け取り、整数と返すには、xの型であります
(b b)
は、2つの関数の型ですか?
誰かが正しい方向に私を向けることができますか?ありがとうございます
です。 '\ f x - >(f x、f 1)'はGHCiでは文字定数 '' 1''が '' Integer''にデフォルト設定されているので '(Integer-> b) - > Integer->(b、b)'に制約されます。したがって、関数であると推定される 'f'は' Integer'をとります。 tuple要素の1つで 'x'が' f'に渡されるので 'x'は' Integer'でなければなりません。 '(b、b)'はちょうどタプルで、 'b'は' f'の戻り値の型です。 – bheklilr
ありがとうございました!それは素晴らしい説明です!感謝します。 –
この 'c b a = a b 'が' c :: t1 - >(t1 - > t) - > t'型である理由を教えてください。 @bheklilr –