haskell 同样的函数在使用GHCI时起作用,但在VS代码中不起作用

5m1hhzi4  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(73)

我是Haskell的新手,我试图写一个函数来替换数组的第一个和最后一个元素。当我在GHCI中编写代码时,它工作得很好,但在VS Code中,它给出了一个错误,说“解析错误”。我猜“让”不是我想象的那样。下面是函数:

swap1 :: [x] -> [x]
swap1 [] = error "empty list"
swap1 [x] = error "one element list"
swap1 let a = head x
swap1 let b = last x
swap1 let y = init x
swap1 let z = tail y
swap1 = b:z ++ [a]
euoag5mw

euoag5mw1#

你写的东西大部分都是废话:

swap1 let a = head x

例如,缺少let inin <expr>部分(有一个没有in …的特殊变体,但它只对do块有效,并作为裸ghci命令行上的扩展),而且x在该子句中没有定义,所有以前的定义要么是一个类型,这在这里没有意义,要么是一个单独的项目,这与head组合也没有意义。
从你的代码中,我猜你打算写下面的函数:

swap1 [] = error "empty list"
swap1 [_] = error "one element list"
swap1 (a:y) = let b = last y
                  z = init y
               in b:z ++ [a]

相关问题