haskell - Haskell 中的模式匹配等效变量,例如 Prolog

标签 haskell syntax prolog pattern-matching unification

在 prolog 中,我们可以执行以下操作:

myFunction a (a:xs) = ...

也就是说,当 myFunction 的第一个参数与第二个参数中的列表的第一项相同,此函数将计算为 ... .

我现在的问题是......如何在 Haskell 中完成类似的事情?
我认为 Prolog 的模式匹配比 Haskell 的更具表现力。我一直在尝试在 Haskell 中编写代码,但遇到了麻烦——要么我使用了无效的语法,要么上述技巧根本行不通。

最佳答案

Haskell 不做这种“变量匹配”。你必须明确地把 guard 放在:

myFunction a (x:xs)
    | x == a = ...

关于haskell - Haskell 中的模式匹配等效变量,例如 Prolog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4092962/

相关文章:

解析haskell保留注释/格式

swift - 使用 var 在 Swift 中解包一个可选的?

prolog - 纯 Prolog 方案 Quine

string - 从字符串中删除空格

function - 在 Haskell 中减少命题的大小

C - void 函数(void)、参数和返回值

lambda - 在 Prolog 中用破折号分隔原子名称

syntax - Prolog:语法正确的对象+关系与结构

haskell - 重构 where 子句

python - 如何在OpenCV中的python中平均获得2分?