【发布时间】:2013-11-11 05:01:10
【问题描述】:
我正在尝试使用 Data.Map 将字符串映射到函数。我遇到的问题是我的程序中的主要错误处理使用了 Either monad,Map.lookup 将返回Maybe ([SomeVal] -> Either ValError SomeVal)。在这种情况下,如何让 Map.lookup 与 Either monad 很好地配合?
apply :: String -> [SomeVal] -> Either ValError SomeVal
apply s args = (Map.lookup s prims) >>= \fn -> fn args
prims :: Map String ([SomeVal] -> Either ValError SomeVal)
prims = Map.fromList
[("key", function)
,("key2", function2)
]
::> apply "key" [val1, val2, val3]
【问题讨论】: