use*_*252 2 syntax parsing haskell
我正在尝试在 Haskell 中编写一个函数,并且尝试用两个 let 开始该函数,然后是答案。
split :: (a -> b) -> (a -> c) -> a -> (b, c)
split x y z =
let first = ( x (y))
let last = ( y (Z))
(first, last)
Run Code Online (Sandbox Code Playgroud)
从第二个 let 语句开始,我收到“输入‘let’时出现解析错误”。这是为什么?我该如何解决这个问题?
split :: (a -> b) -> (a -> c) -> a -> (b, c)
Run Code Online (Sandbox Code Playgroud)
a这表示您的第一个参数是从某种类型到某种类型的函数,第二个参数是从某种类型到某种类型的b函数。ac
split x y z =
Run Code Online (Sandbox Code Playgroud)
所以x :: a -> b和y :: a -> c.
let first = ( x (y))
Run Code Online (Sandbox Code Playgroud)
这意味着您正在尝试将该函数应用于,x但这y不起作用,因为x需要类型为 的参数a并且y类型为a -> c。这是错误的。
let last = ( y (Z))
Run Code Online (Sandbox Code Playgroud)
没有Z,检查你的大小写。
(first, last)
Run Code Online (Sandbox Code Playgroud)
从语法上来说,你需要一个in. 语法是:
let var1 = expr1
var2 = expr2
in expr3WithVars1And2InScope
Run Code Online (Sandbox Code Playgroud)
一个小例外:当使用do块时,您不使用它in,因为它隐式是块的其余部分do。