Haskell 递归地使用
我定义了一个函数,如下所示:Haskell 递归地使用,haskell,recursion,pattern-matching,either,Haskell,Recursion,Pattern Matching,Either,我定义了一个函数,如下所示: myFunction :: String -> Either String MyType 我一直读到最后左侧用于处理错误Right假设返回元组。在myFunction中,我正在调用另一个函数并检查它是否返回Left或Right,如下所示: myFunction :: String -> Either String MyType myFunction "" = Right -- want to return MyType here m
myFunction :: String -> Either String MyType
我一直读到最后<代码>左侧用于处理错误Right
假设返回元组。在myFunction
中,我正在调用另一个函数
并检查它是否返回Left
或Right
,如下所示:
myFunction :: String -> Either String MyType
myFunction "" = Right -- want to return MyType here
myFunction s =
case anotherFunction s of
Left c -> Left c
Right (v1, v2, t) -> -- want to call myFunction again with t
当另一个函数
返回Right
时,我想再次递归调用myFunction
,而不会丢失v1
和v2
。我如何通过递归实现这一点
以下是MyType的确切定义:
data MyType = MyString String | MyInt Int | MyMap [(String, MyType)] deriving (Show, Eq)
有点不清楚你在问什么,但我认为你想要的只是
>=
操作符。我想如果你加一个简单的例子会有帮助。例如,一些从Char
到Int
s的2元组的映射来说明您的目标。什么是MyType
?MyType有一个JLMap[(String,MyType)],我相信这是必需的here@Aivaras你能给出MyType
的确切定义吗?