5

私はいくつかのHaskellを学び、非常に単純なプログラムを書いています。与えられた位置の要素を返す関数を作りたいです。これが私がやろうとしたことです-

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

しかし、GHCiエディターでTest.hsファイルをロードすると、このエラーが発生します。

Pattern syntax in expression context: _

そしてそれは失敗した、モジュールがロードされた:なしと言います。私はその言語に非常に慣れていないので、間違いが何であるかについては本当に適切な考えがありません(現在、あなたにハッケルを学ぶの第4章で)。誰かがここで何が悪いのか教えてもらえますか?

4

1 に答える 1

11

_パターン内でのみ有効です。式内で使用しようとしています:head (drop n (b : _))。リストを実際に分解する必要はなく、テールも必要なので、解決策は次のようにすることです。

elempos n xs = head (drop n xs)
于 2012-05-22T09:03:37.670 に答える