如何在Haskell中通过列表理解来重新创建“ take”功能?

时间:2019-05-29 20:02:32

标签: haskell recursion functional-programming list-comprehension

下面的代码通过递归在Haskell中重新创建“ take”功能:

take' :: Int->[a]->[a]
take' 0 _=[]
take' _ []= []
take' n (x:xs)=x : take' (n-1) xs

我想使用列表理解来创建'take'函数:

take' n a=[x|x<-a]

1 个答案:

答案 0 :(得分:6)

使用ParallelListComp扩展,列表理解可以压缩:

{-# LANGUAGE ParallelListComp #-}

take' n a = [x | x <- a | _ <- [1..n]]