From 248647ecb3d8e7c5343c666ff00d8f0a77c483d2 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Fri, 11 Dec 2015 13:10:37 +0100 Subject: cleanup --- ws2015/ffp/blaetter/07/FFP_U07_Monaden2.hs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ws2015/ffp/blaetter/07/FFP_U07_Monaden2.hs b/ws2015/ffp/blaetter/07/FFP_U07_Monaden2.hs index 8e92dee..7939d36 100644 --- a/ws2015/ffp/blaetter/07/FFP_U07_Monaden2.hs +++ b/ws2015/ffp/blaetter/07/FFP_U07_Monaden2.hs @@ -282,13 +282,11 @@ memoWinchance atts defs = runST (newSTRef Map.empty >>= memoWinchance' atts defs memoWinchance' :: forall s. [Monster] -> [Monster] -> STRef s MM -> ST s Double memoWinchance' [] _ _ = return 0 -- We do this here so we don't clutter our manual with entries for empty lists memoWinchance' _ [] _ = return 1 -memoWinchance' atts defs mmRef = recall >>= fromMaybeM (winchance >>= memoize) +memoWinchance' atts defs mmRef = recall >>= maybe (winchance >>= memoize) return where recall = Map.lookup (atts, defs) <$> readSTRef mmRef memoize x = modifySTRef mmRef (Map.insert (atts, defs) x) >> return x winchance = winchance' atts defs mmRef - fromMaybeM x Nothing = x - fromMaybeM _ (Just x) = return x winchance' :: forall s. [Monster] -> [Monster] -> STRef s MM -> ST s Double winchance' allatts@(a:atts) alldefs@(d:defs) mmRef -- cgit v1.2.3