拿 - 列表中的Haskell问题

时间:2016-03-04 20:40:40

标签: list haskell integral take

我正在学习Haskell。我有一个看起来如下的函数:

takeN :: Integral a => a -> [a]
takeN n = take n [x | x<-[0..]]

我想要这样做,是在无限列表中返回n个元素,并且我不知道为什么这不起作用。如何解决它而不放弃我的绑定的任何解释(?)

2 个答案:

答案 0 :(得分:3)

这不起作用的原因是take的类型为Int -> [a] -> [a]。该号码必须为Int,且不能为Integral

您可以使用fromIntegral解决问题:

takeN :: Integral a => a -> [a]
takeN n = take (fromIntegral n) [x | x<-[0..]]

答案 1 :(得分:0)

你可以不用自己的功能去做:   输入&GT;&GT;拿3 [1 ..]   输出&GT;&GT; [1,2,3]