我有以下功能簡化代碼[]
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 []
鑑於或許所有的情況下,我想我可以把它簡化爲東西也許單子裏面更簡單:
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 ???]
但我的問題是最後的其他問題,我需要什麼都不返回。
這是我的問題:是否有可能以[f a] = []這樣的方式返回任何內容?
謝謝,這是完美的! – 2013-03-01 19:05:34