答案 0 :(得分:5)
(:=)
实际上是一个构造函数。它构建了一种数据类型。我们无法知道它构造的数据类型,而不知道您导入了哪些库。但作为一个例子
data Example = String := Int
然后我们可以写
demo = "foo" := 0
demo2 :: Example -> Int
demo2 (_ := i) = i
在第一个demo
中,我们使用此构造函数构造Example
,在第二个中,我们在其中进行模式匹配并返回Int
组件。
答案 1 :(得分:3)
根据你删除的问题的上下文:你有一个伪代码算法,需要在Haskell中实现它。在这种情况下,:=
表示“assign”,在Haskell中只写=
。当然,你不能只是逐个符号地转换伪代码,并期望最终得到一个Haskell程序。例如。伪代码有一个带有可变变量的循环;你必须改为使用递归。
这是一个非常简单的例子:
伪代码:
i := 0
j := 10
while (i < j)
i := i + 1
j := j - 1
return j
Haskell中:
x = let (_, j) = foo 0 10 in j
where foo i j | i < j = foo (i + 1) (j - 1)
| otherwise = (i, j)