在 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
但是我遇到了错误。任何想法为什么?