Data.Map を使用して文字列を関数にマップしようとしています。私が抱えている問題は、私のプログラムの主なエラー処理が、Either モナドを使用し、Map.lookup
を返すことMaybe ([SomeVal] -> Either ValError SomeVal)
です。Map.lookup
この場合、Either モナドをうまく扱うにはどうすればよいでしょうか?
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]