haskell - Haskell列表生成器中的生成器不起作用

标签 haskell syntax syntax-error list-comprehension

我正在尝试生成一个列表,其中将包含我要解决的问题的解决方案列表。我这样做是使用列表推导,生成所有可能的组合,然后使用谓词进行过滤,以便仅包含解决方案。这是我的代码。

solveRow :: Row -> [Row]
solveRow (Row target rowCells) =
    [(cellsToRow target cls) | (cls <- (cellPermutations rowCells)), (result cls)==target]
cellPermutations返回[[Cell]],因此cls应该为[Cell]类型。当我尝试编译时,出现错误。

enter image description here

我以为<-将右侧的每个元素(在本例中为[Cell])传递给左侧的变量。为什么我收到<-的解析错误?

最佳答案

请勿在cls <- (cellPermutations rowCells)前后加上方括号,这是一种语法错误。您也不需要用cellsToRow target cls括住括号,尽管这样做不是错误。 (严格来说,您也不需要在result cls周围加上括号,但我个人认为这些括号使它更具可读性。)因此,您的示例应为:

solveRow :: Row -> [Row]
solveRow (Row target rowCells) =
    [cellsToRow target cls | cls <- (cellPermutations rowCells), (result cls)==target]

关于haskell - Haskell列表生成器中的生成器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60034418/

相关文章:

haskell - 在 haskell 中编写仅适用于关联类型的函数

haskell - `instance FromJSON a => FromJSON (Entity a)` 在 Haskell 中如何工作?

syntax - Fortran 传递带括号的参数可防止更改

ruby - 语法错误,意外的keyword_end结尾

python - 为什么在这里引发 IndentationError 而不是 SyntaxError?

haskell - 使用 DataKinds 扩展时如何导出类型构造函数?

javascript - 我需要一个 Javascript 文字语法转换器/反混淆工具

mysql - SQL 查询语法错误,使用 INNER JOIN 的 UPDATE 语句

Python 3 : Unexpected EOF when parsing

haskell - 数据类型的别名