0
どうして私はString
の制約を設定できませんが、Num
はうまく動作しますか?制約で文字列を使用できないのはなぜですか?
これは動作します:
ltest' :: (Num a) => a -> a
ltest' a = (\b -> b * 2) a
これはしません:
test' :: (String a) => a -> a
test' a = a ++ " good job"
エラー:
• Expecting one fewer argument to ‘String’
Expected kind ‘* -> Constraint’, but ‘String’ has kind ‘*’
• In the type signature:
test' :: (String a) => a -> a
ありがとうございます!私は、関数のparamとしてCのようにString型の値だけを渡すようにしたかったのです。function x(char a){} – vodich
これは、型を 'String - > String'として宣言することで実現します。 –
このようなことはありません(String a)=> a - > a? – vodich