我在haskell中编写了以下函数,因为它将枚举每个整数:
integers = (0:)$ concat $ zipWith (\x y -> [x,y]) [1..] (map negate [1..])
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更好的方法来做到这一点,看起来确实有点过于复杂.
另外,我想知道是否有标准实现来列出维度$ k $的整数点阵中的所有元素.
Ric*_* T. 17
integers = 0 : concat [[x,(-x)] | x <- [1..]]
Run Code Online (Sandbox Code Playgroud)
(或者,正如@ DanielWagner在下面评论中的解决方案中我觉得的更好)
import Control.Applicative
integers = 0 : zipWith (*) ([1..] <* "mu") (cycle [1,-1])
Run Code Online (Sandbox Code Playgroud)
当然,你也可以走非僧人的道路:
integers = 0 : [y | x <- [1..], y <- [x,-x]]
Run Code Online (Sandbox Code Playgroud)
但是你不会理解mu的真正含义.