Tom*_*net 1 syntax haskell list-comprehension syntax-error
我正在尝试生成一个列表,其中将包含我正在尝试解决的问题的解决方案列表。我正在使用列表理解来执行此操作,生成所有可能的组合,然后使用谓词进行过滤,以便仅包含解决方案。这是我的代码。
solveRow :: Row -> [Row]
solveRow (Row target rowCells) =
[(cellsToRow target cls) | (cls <- (cellPermutations rowCells)), (result cls)==target]
Run Code Online (Sandbox Code Playgroud)
cellPermutations返回[[Cell]],因此cls应该是类型[Cell]。当我尝试编译时出现错误。
我认为<-将右侧的每个元素(在这种情况下[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]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |