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

Tof*_*fiq 0 recursion haskell functional-programming list-comprehension

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

take' :: Int->[a]->[a]
take' 0 _=[]
take' _ []= []
take' n (x:xs)=x : take' (n-1) xs
Run Code Online (Sandbox Code Playgroud)

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

take' n a=[x|x<-a]
Run Code Online (Sandbox Code Playgroud)

Ry-*_*Ry- 6

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

{-# LANGUAGE ParallelListComp #-}

take' n a = [x | x <- a | _ <- [1..n]]
Run Code Online (Sandbox Code Playgroud)

  • 即使没有扩展名,您也可以写出[[x | (x,_)&lt;-压缩[1..n]]`。 (2认同)