次のコードが間違っているとは本当に分かりません。Haskellの厳格な型変数
data TypeA = TypeA
class MyClass a where
myClassFunction :: a -> String
instance MyClass TypeA where
myClassFunction TypeA = "TypeA"
bar :: (MyClass a) => String -> a
bar "TypeA" = TypeA
私は次のエラーを取得:私はHaskellの型システムに関する重要な何かが欠けていることを恐れている
Couldn't match expected type ‘a’ with actual type ‘TypeA’
‘a’ is a rigid type variable bound by
the type signature for bar :: MyClass a => String -> a
at test.hs:9:8
Relevant bindings include
bar :: String -> a (bound at test.hs:10:1)
In the expression: TypeA
In an equation for ‘bar’: bar "TypeA" = TypeA
Failed, modules loaded: none.
を。
あなたの目標は何ですか? –
@BartekBanachewiczは、主にHaskell型システムとダイナミックディスパッチを試しています(私はこれがここに当てはまるとは確信していません) – Saczew
ダイナミックなディスパッチが必要なのは明らかです。 –