【问题标题】:Haskell- Pattern syntax in expression context: _Haskell-表达式上下文中的模式语法:_
【发布时间】:2012-05-22 08:55:48
【问题描述】:

我一直在学习一些 Haskell 并编写非常简单的程序。我想做一个函数来返回给定位置的元素。这是我尝试做的-

elempos::Int->[a]->a
elempos n (b:_)=head (drop n (b:_) )

但是当我在 GHCi 编辑器中加载 Test.hs 文件时出现此错误。

Pattern syntax in expression context: _

它显示失败,已加载模块:无。 因为我对这门语言很陌生,所以我真的不知道错误是什么(目前在第 4 章学习你的 Haskell)。谁能告诉我这里有什么问题?

【问题讨论】:

  • _ 因为模式的意思是“我不在乎它是什么”,所以不仅不允许,而且将它“喂”给像 drop 这样的函数是没有意义的( 需要知道它的论点)。
  • 有!!操作员做你需要的。

标签: syntax haskell


【解决方案1】:

_ 仅在模式内部有效,您尝试在表达式中使用它:head (drop n (b : _))。由于您实际上并不需要分解列表,并且确实需要尾部,因此解决方案是:

elempos n xs = head (drop n xs)

【讨论】:

  • 啊..谢谢你的澄清。在我看到它之后,我可能太兴奋了,无法以任何可能的方式在函数中使用它。 =) 非常感谢。
  • @Andariel:如果它解决了您的问题,请不要忘记接受他的回答:)
猜你喜欢
  • 1970-01-01
  • 2014-04-01
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 2017-04-20
  • 2012-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多