【问题标题】:making a list with where/let clause Haskell使用 where/let 子句 Haskell 创建一个列表
【发布时间】:2018-12-12 09:08:41
【问题描述】:

我正在尝试在 haskell 中创建一个包含元组第二部分的列表。我正在函数内部创建元组,但是我不确定如何链接这两个(ziplist Making),以便我的函数可以工作。

   search str goal = let letterPos =zip str [1..length(str)] in
      [snd(x) | x<-letterPos, fst(letterPos)==goal]

基本上这就是我创建元组的方式:

letterPos =zip str [1..length(str)]

这就是我想使用它们的地方:

[snd(x) | x<-letterPos, fst(letterPos)==goal]

感谢您的帮助。

【问题讨论】:

  • 如果您添加错误会更好。
  • 不要使用length(str)zip str [1..] 就足够了,而且效率更高,因为您不必计算长度。此外,Data.List 模块中有一个内置函数调用 findIndices,它完全符合您的要求
  • 你可能想看看lookup函数。

标签: haskell zip tuples list-comprehension where-clause


【解决方案1】:

fst(letterPos) 替换为fst(x)

【讨论】:

  • 非常感谢 :D 我没有意识到这是问题所在。
  • 或者,更好的是fst x。 Haskell 中的函数调用不使用括号。
猜你喜欢
  • 2016-05-18
  • 2020-04-22
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多