我是Haskell的初学者,并且尝试实现一个函数,该函数不使用!!
内置的prelude即可返回列表的第k个元素。
kth_i [] _ _ = -1
kth_i (x:xs) i k = if i == k then x else kth_i xs (i + 1) k
kth xs k = kth_i xs 0 k
该代码有效,但是太冗长。我只想使用一个功能。
编辑:我最终得到:
let kth (x:xs) k = if k == 0 then x else if k < 0 then error "out of bounds" else kth xs (k - 1); kth [] _ = error "out of bounds"
根据@Carsten的建议。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句