2016-05-04 12 views
1

私は99ハスケル問題の課題と問題の解決法の1つに取り組んできました。 3 - 0でない、1から数えて、リストのk番目の要素を取得 - である:ハスケルのコード意味99問題

elementAt''' xs n = head $ foldr ($) xs $ replicate (n - 1) tail 

Iは、リストが与えられると、我々は実行できる、ということを理解(N - 1)tail操作および最初の要素最終的なリストのうちの1つが私たちが探しているものです。書かれているように、foldrのアキュムレータの初期値は与えられたリストですが、リストでなければならない2番目の引数を特定できません。

最初の手順を説明していただければ幸いです。foldrです。

答えて

4

リスト引数はreplicate (n - 1) tailです。これは、関数tail(n-1)を含むリストです。したがって、関数として($)があり、最初の要素としてxs、リストとして[tail, tail, ..., tail]があります。したがって、折り畳みの結果はtail $ tail $ ... $ tail $ xsです。

関連する問題