(:=)在Haskell中意味着什么?

时间:2014-02-17 04:28:46

标签: haskell

  • nexts:= nexts(step)* nextstep:= pop(nexts) / *如何在Haskell代码中转换此部分(:=)

2 个答案:

答案 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)