Haskell では、次のようSubst a
に単一のコンストラクターで多相データ型を定義しS :: [(String, a)] -> Subst a
ました。
data Subst a where
S :: [(String, a)] -> Subst a
deriving (Show)
get::String -> Subst a -> Maybe a
変数名と置換を取り、その変数を置換する必要がある値を返す関数を定義したいと考えています。変数で置換が定義されていない場合、関数は Nothing を返す必要があります。
私は次のことを試しました:
get :: String -> Subst a -> Maybe a
get str (S[]) = Nothing
get str (S((a,b):xs)) = if str == a then Just b
else get str xs
しかし、私はエラーが発生しています。理由はありますか?