不能构造无限类型:e〜[e]

时间:2017-08-20 18:20:47

标签: haskell

为什么这段代码:

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]]

它运作正常吗?

1 个答案:

答案 0 :(得分:5)

在列表推导中,<-的右侧是列表以从中获取元素。但您可以使用let表达式:

[ ... | ..., let x = a ! (i,j) ]