我正在尝试编写一个程序,在输入中接受一个由列表(如[[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)但我明白错误
解析错误(可能是不正确的缩进或不匹配的括号)
因此,我尝试不带括号地编写代码,所有代码都在一行中,没有缩进,但我没有设法解决这个错误。
我开始怀疑这不是括号或空格的问题。
发布于 2018-06-15 20:48:03
我无法猜测为什么编译器会给出错误消息,但在Haskell中,所有if/then表达式都需要一个else情况:
transpose xxs =
if (length xxs) > 0
then map head xxs : prova (map tail xxs)
else [[]]在这里,我只将[[]]放在else分支中,因为这是我能想到的满足编译器的最简单的方法。
https://stackoverflow.com/questions/50882284
复制相似问题