我正在编写一个 Haskell 函数,它接受 2 个替换作为参数。我处理过这样的情况:如果任一参数为 Nothing
,则该函数将返回 Nothing
。如果两者都不是 Nothing
,则应将它们合并为一个替换。我已完成以下操作:
args :: Maybe (Subst a) -> Maybe (Subst a) -> Maybe (Subst a)
args (Just v) (Just v') = Just (v ++ v')
args _ _ = Nothing
但是,我收到错误消息,指出预期类型与实际类型不匹配。我很困惑为什么。有什么想法吗?
最佳答案
++
的类型是
(++) :: [a] -> [a] -> [a]
但您试图将其应用于 Subst a
类型的两个值。
您可以编写一个辅助函数combineSubs
,如下所示:
combineSubs :: Subst a -> Subst a -> Subst a
combineSubs (S xs) (S ys) = S (xs ++ ys)
您还可以在函数 args
的参数中对 S
进行模式匹配。
关于string - 两个替换作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13296947/