string - 两个替换作为参数

标签 string haskell substitution

我正在编写一个 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/

相关文章:

c - 获取字符串文字的地址或对其进行迭代是否有效?

java - 如何删除字符串中问号(?)后面的尾随字符?

Haskell 风格和类型类设计(类型类应该最小化吗?)

haskell - 这个列表理解代码有什么问题?

python - Sphinx 文档常量替换

c - 替代密码打印表

c# - 使用 Split 方法进行字符串操作

c - STM32 Discovery 在线程之间共享变量

haskell - 我可以检查 Haskell 如何分配内存吗?

python - 使用参数替换读取 bash 环境变量集到 Python 变量中