【问题标题】:Assign multiple variables Haskell分配多个变量 Haskell
【发布时间】:2018-03-12 05:28:23
【问题描述】:

有没有办法在 Haskell 中为多个变量分配相同的值? 例如这样的:

h,f = 5 

【问题讨论】:

  • 只是出于好奇:您想到的还有其他语言可以做到这一点吗?
  • @ChrisMartin 也许this one.
  • @ChrisMartin 在 Python 中你可以做到 h = f = 5
  • @ChrisMartin 在 R 中你甚至可以做 f <- 5 -> h

标签: variables haskell


【解决方案1】:

没有。而且没有理由这样做。因为变量在 haskell 中是不可变的,所以一旦某个值绑定到某个变量,它就永远不会在范围内改变。所以,h, f = 5 在 haskell 中没有意义。只需在预期为 5 的地方使用 h;不需要f

【讨论】:

  • 与记录通配符结合使用可能会稍微有用,例如origin = let x, y, z = 0 in Point{..}
【解决方案2】:
Prelude> let [x, y] = replicate 2 5
Prelude> x
5
Prelude> y
5
Prelude>

您需要replicate 来“复制”一个值。在这种情况下,我将 5 复制了两次。 [x, y] 的意思是从列表中获取 xy。该列表是[5, 5]。所以,你得到了x = 5y = 5

好吧,我在现实世界的 Haskell 中从未做过这样的行为,但你得到了你想要的。

编辑:我们可以使用repeat 函数和Haskell 中的惰性求值特性。感谢luqui

Prelude> let x:y:_ = repeat 5
Prelude> x
5
Prelude> y
5
Prelude>

【讨论】:

  • 如果列表长度与要复制的数字不匹配,如果要避免可能的模式匹配错误,请改用repeatlet x:y:_ = repeat 5。而且我也从未在野外见过这个成语,并且由于@absolutezero 提到的原因,我怀疑它是徒劳的。
  • @luqui 我忘了我可以使用repeat 和懒惰评估的功能。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-13
  • 2020-04-10
  • 2012-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多