haskell错误功能

时间:2011-03-24 15:38:24

标签: haskell

我有一个类型为first的函数Int -> [a] -> (Error ([a],[a]))和一个类型为second的第二个函数[a] -> [a] -> [a]

我正在尝试使用上述函数制作第三个函数。 我对此函数的类型是:[Int] -> [a] -> Error [a]

我已经被赋予这些类型以便解决它们。

这就是我的尝试:

last :: [Int] -> [a] -> Error [a]
last (x:xs) list = second (first x list)

您可以将使用错误功能的函数的输出传递给其他人吗?

1 个答案:

答案 0 :(得分:3)

假设Errorerror monad,您可以使用monadic绑定运算符(>>=)和uncurry函数:

z (x:xs) list = F x list >>= return . uncurry Q

uncurry将Q从具有两个参数(也称为curried函数)的函数转换为对上的函数。这意味着uncurry Q :: ([a], [a]) -> [a]

bind运算符从monad中获取一个值并将其传递给monadic函数。这里我们提取F返回的Error monad的值并将其传递给Q,现在变成了一对monadic函数,可以在一对列表上工作,感谢returnuncurry