(Haskell)curry后模式中的分析错误

(Haskell)curry后模式中的分析错误,haskell,currying,parse-error,Haskell,Currying,Parse Error,更改此项后,我收到一个分析错误: h :: ([Int],Int,[Int])->[[Int]] h ([],k,x) =[[]] h(y:[],k,x) = [x++k:[y]] h(y:xs,k,x)= [x++k:y:xs]++h(xs,k,x++[y]) 到这个:在3号线 h :: [Int]->Int->[Int]->[[Int]] h [] k x =[[]] h (y:[]) k x = [x++k:[y]] h y:xs k x = [x+

更改此项后,我收到一个分析错误:

h :: ([Int],Int,[Int])->[[Int]]

h ([],k,x) =[[]]

h(y:[],k,x) = [x++k:[y]]

h(y:xs,k,x)= [x++k:y:xs]++h(xs,k,x++[y])
到这个:在3号线

h :: [Int]->Int->[Int]->[[Int]]

h [] k x  =[[]]

h (y:[]) k x = [x++k:[y]]

h y:xs k x = [x++k:y:xs]++h(xs,k,x++[y])

这条线有两个问题:

h y:xs k x = [x++k:y:xs]++h(xs,k,x++[y])
  ^^^^                    ^^^^^^^^^^^^^
  (1)                     (2)
  • 您需要围绕此模式设置参数-
    (y:xs)
  • 与其他语言如C、Java、C#等不同,在Haskell中,您不使用逗号将参数分隔为函数

  • h(y:[])kx=[x++k:[y]]解释器会在这里说:嘿,你能稍微修改一下你的代码布局吗?很难理解那里发生了什么。如果我错了,请纠正我。我想在表达式
    h(y:[])kx
    中添加,
    (y:[])
    通过声明
    h
    被期望为元组
    ([Int],Int,[Int])
    。在
    hy:xskx
    中,
    y
    应该是这样一个元组。