为什么这段代码:
a=array ((0,0),(5,5)) [((i,j),x) | i <- [0..5], j <- [0..5], x <- a!(i,j)]
导致错误cannot construct the infinite type: e ~ [e]
,
但如果像这样重写:
a=array ((0,0),(5,5)) [((i,j),a!(i,j)) | i <- [0..5], j <- [0..5]]
它运作正常吗?
答案 0 :(得分:5)
在列表推导中,<-
的右侧是列表以从中获取元素。但您可以使用let
表达式:
[ ... | ..., let x = a ! (i,j) ]