输入`< - '的解析错误

时间:2014-10-03 19:36:22

标签: haskell

我的代码如下所示:

threeByThree :: Sudoku -> [Block]
threeByThree sudoku = (chunksOf 9(concat(transpose(take 3 (rows sudoku)))++
    (transpose(take 3 rs))++(transpose xs)))
      where 
        rs <- drop 3 (rows sudoku)
        xs <- drop 3 rs

我收到的错误消息:

Sudoku.hs:130:12: parse error on input `<-'

哪一个应该是第一个箭头。我错过了这里显而易见的吗?

2 个答案:

答案 0 :(得分:4)

可能你的意思是:

where 
   rs = drop 3 (rows sudoku)
   xs = drop 3 rs

请注意,<-具有不同的含义。它用于Monad desugaring。

答案 1 :(得分:1)

@Sibi对您的具体问题有正确的答案。我只想简单提一下,这个错误通常意味着您忘记将do放在do块的开头:

-- Parse error on input `<-'
example1 =
    x <- m
    y <- n

-- How to fix the error:
example2 = do
    x <- m
    y <- n