我正在尝试使用列表理解来制作这样的嵌套列表:
[[1,2,3],[4,5,6],[7,8,9]]
Run Code Online (Sandbox Code Playgroud)
我编写了类似的代码:
take 3 [take 3 [i .. ] | i <- [1 ..]]
Run Code Online (Sandbox Code Playgroud)
但它给出了这个:
[[1,2,3],[2,3,4],[3,4,5]]
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它像上面的那样?
我写了一个这样的函数:
\n\nconstGrid :: a -> [[a]]\nconstGrid c = take 3 [take 3 [i,i ..] | i <- [c,c ..]]\nRun Code Online (Sandbox Code Playgroud)\n\n我用以下方式调用它:
\n\nprint(constGrid \'a\')\nRun Code Online (Sandbox Code Playgroud)\n\n它应该打印
\n\n["aaa","aaa","aaa"]\nRun Code Online (Sandbox Code Playgroud)\n\n或任何整数或布尔值替换\'a\'。
当我评论第一行时它可以工作,但是当我打开它时,它会给出如下错误:
\n\n[1 of 1] Compiling Main ( test.hs, test.o )\n\ntest.hs:17:46: error:\n\xe2\x80\xa2 No instance for (Enum a)\n arising from the arithmetic sequence \xe2\x80\x98c, c .. \xe2\x80\x99\n Possible fix:\n add (Enum a) to the context of\n the type signature for:\n constGrid :: a -> [[a]]\n\xe2\x80\xa2 In the …Run Code Online (Sandbox Code Playgroud)