0
Int a => a -> String
とInt -> String
の違いは何ですか?どのdiffrence Int a => a - > StringとInt - > String
成功:
f1 :: Int -> String
エラー:
f1 :: Int a => a -> String
f1 n = show n
Int a => a -> String
とInt -> String
の違いは何ですか?どのdiffrence Int a => a - > StringとInt - > String
成功:
f1 :: Int -> String
エラー:
f1 :: Int a => a -> String
f1 n = show n
Int
が、具体的なタイプですので、制約を作成するために使用することはできません。 Num
のような型クラス(種類が* -> Constraint
の場合)が制約の作成に使用されます。
あなたはする必要はありません。制約の目的は、a
のような型変数が特定のクラスのインスタンスである型でなければならないことを指定することです。 Int a
のようなものは「タイプInt
タイプa
」を意味するだけで、そのようなタイプ(驚き:Int
)が1つしかないので、Int -> String
と書いてください。
Num a => a -> String
ような制約はInt
、Integer
、Float
、Double
、またはいくつかの他の適切なタイプであってもよいNum
を実装する任意の型の引数を取る関数の種類を定義します。
ここで実際の質問は何ですか? See [ask] –
私はc/C++から来たと思います。 'Int a'は' a'が 'Int'であることを意味しません。読んでみることをお勧めします[lyahfgg](http://learnyouahaskell.com/types-and-typeclasses) – wizzup