我一直在研究99个Haskell问题挑战和问题解决方案之一。 3 - 获取列表的第k个元素,从1开始计数,而不是0 - 是:
<a href="#" class="btn btn-default" data-toggle="buttons">
Public
<input type="radio" name="is_private" value="0" />
</a>
我理解,给定一个列表,我们可以执行(n - 1)elementAt''' xs n = head $ foldr ($) xs $ replicate (n - 1) tail
次操作,最终列表的第一个元素就是我们要查找的那个。在编写时,tail
的累加器的初始值是给定的列表,但是我无法识别第二个参数,它应该是一个列表,对吗?
如果您解释了foldr
的第一步,我将不胜感激。
答案 0 :(得分:4)
list参数是replicate (n - 1) tail
,这是一个包含函数tail
(n-1)
次的列表。因此,我们将($)
作为函数,xs
作为初始元素,[tail, tail, ..., tail]
作为列表。所以折叠的结果是tail $ tail $ ... $ tail $ xs
。