私は次の機能を持っています
type Assignment = [(Ref, Val)]
predi2 :: [(Val,Val)] -> Ref -> Ref -> (Maybe Assignment -> [Maybe Assignment])
predi2 f k1 k2 = \ma -> case ma of
Nothing -> [Nothing]
Just a -> case lookup k1 a of
Nothing -> [Nothing]
Just e1 -> case lookup k2 a of
Nothing -> [Nothing]
Just e2 -> if elem (e1, e2) f
then [Just a]
else []
Maybe のすべてのインスタンスを考えると、Maybe モナド内でもっと単純なものに単純化できると思いました。
predi2 :: [(Val,Val)] -> Ref -> Ref -> (Maybe Assignment -> [Maybe Assignment])
predi2 f k1 k2 = [\ma -> do
a <- ma
e1 <- lookup k1 a
e2 <- lookup k2 a
if elem (e1, e2) f then (return a) else ???]
しかし、私の問題は、何も返す必要がない最後の他のものです。
それが私の質問です: [fa] = [] のような方法で何も返さないことは可能ですか?