表达式上下文中的Haskell- Pattern语法:_

And*_*iel 5 syntax haskell

我一直在学习一些Haskell并编写非常简单的程序.我想创建一个函数,它将返回给定位置的元素.这是我试图做的 -

elempos::Int->[a]->a
elempos n (b:_)=head (drop n (b:_) )
Run Code Online (Sandbox Code Playgroud)

但是当我在GHCi编辑器中加载Test.hs文件时,我收到此错误.

Pattern syntax in expression context: _
Run Code Online (Sandbox Code Playgroud)

它说失败,模块加载:无.因为我对这门语言很陌生,所以我真的不知道错误是什么(目前在第4章了解你是一个haskell).谁能告诉我这里有什么问题?

Cat*_*lus 11

_只在模式中有效,你试图在表达式中使用它:head (drop n (b : _)).既然你真的不需要分解列表,而你确实需要尾部,那么解决方案就是:

elempos n xs = head (drop n xs)
Run Code Online (Sandbox Code Playgroud)