Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在输入上获取解析错误'=';错误(haskell)_Haskell - Fatal编程技术网

在输入上获取解析错误'=';错误(haskell)

在输入上获取解析错误'=';错误(haskell),haskell,Haskell,我的函数append获取列表[[a]、[b,c]、[d,e]]的列表并返回单个列表[a,b,c,d,e]。 我把它写在一个文件中,所以我不必使用“let”,但输入“=”时仍然会出现解析错误。有人能帮忙吗? 谢谢 append::[[a]]->[a] 附加[[a]]=[a | len=长度a,n=1,头a++(a!!n),n[a] 附加[[a]]=[a |让len=长度a,让n=1,头a++(a!!n),n[a] 附加[[a]]=[a |让len=长度a,让n=1,头a++(a!!n),n

我的函数append获取列表[[a]、[b,c]、[d,e]]的列表并返回单个列表[a,b,c,d,e]。 我把它写在一个文件中,所以我不必使用“let”,但输入“=”时仍然会出现解析错误。有人能帮忙吗? 谢谢

append::[[a]]->[a]
附加[[a]]=[a | len=长度a,n=1,头a++(a!!n),n
无论代码是否在文件中,您仍然需要使用
let
在列表中定义局部变量。文件中的代码只会对顶级定义产生影响。本地定义保持不变

因此,代码的语法正确版本应该是:

append :: [[a]] -> [a]
append [[a]] = [ a | let len = length a, let n = 1, head a ++ (a !! n) , n < len]
--                   ^^^                 ^^^
append::[[a]]->[a]
附加[[a]]=[a |让len=长度a,让n=1,头a++(a!!n),n
无论代码是否在文件中,您仍然需要使用
let
在列表中定义局部变量。文件中的代码只会对顶级定义产生影响。本地定义保持不变

因此,代码的语法正确版本应该是:

append :: [[a]] -> [a]
append [[a]] = [ a | let len = length a, let n = 1, head a ++ (a !! n) , n < len]
--                   ^^^                 ^^^
append::[[a]]->[a]
附加[[a]]=[a |让len=长度a,让n=1,头a++(a!!n),n
对于
len
n
,您需要
let

append [[a]] = [a | let len = length a, let n = 1, head a ++ (a !! n), n < len]

这相当于
foldr
定义,但希望它对解决此类问题更有指导意义。

对于
len
n
,您需要
let

append [[a]] = [a | let len = length a, let n = 1, head a ++ (a !! n), n < len]
这相当于
foldr
定义,但希望它对解决此类问题更有指导意义