haskell解析错误不正确的标识?

时间:2018-06-15 20:29:08

标签: haskell

我试图编写一个程序,在输入中接受由[[1,2],[3,4],[5,6]]等列表列表生成的矩阵,并将其转置为[[1,3,5],[2,4,6]]

此版本有效,但它会出错,因为它到达列表末尾并且不会停止。

transpose xxs = map head xxs : transpose (map tail xxs)

所以我尝试了这个

transpose xxs = if ((length xxs)>0) then 
            map head xxs : transpose (map tail xxs)

但是我收到了错误

  

解析错误(可能是错误的缩进或括号不匹配)

所以我尝试编写没有括号的代码,全部在一行中,没有缩进但是我没有设法解决这个错误。

我开始怀疑它不是括号或空格的问题。

1 个答案:

答案 0 :(得分:1)

我无法开始猜测为什么编译器会向您提供该错误消息,但在Haskell中,所有if/then表达式也需要else个案例:

transpose xxs =
  if (length xxs) > 0
  then map head xxs : prova (map tail xxs)
  else [[]]

这里我只是将[[]]放在else分支中,因为这是我能想到满足编译器的最简单的事情。