采取 - Haskell 列表中的问题

Take - Haskell problems within lists

我正在学习中Haskell。我有一个如下所示的函数:

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

我只想做的是 return n 无限列表中的元素数量,我不知道为什么这不起作用。关于如何在不放弃我的绑定的情况下修复它的任何解释 (?)

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

您可以通过 fromIntegral 解决问题:

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

不用自己做函数也可以做到: 输入>>取3 [1..] 输出>> [1,2,3]