From c339123a7d2f7a9add05c486fd337b8f7b00f873 Mon Sep 17 00:00:00 2001 From: Masahiro Sakai Date: Thu, 21 Oct 2021 23:31:08 +0900 Subject: [PATCH] improve documentation of ZDD.fold and ZDD.fold' a little --- src/Data/DecisionDiagram/ZDD.hs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Data/DecisionDiagram/ZDD.hs b/src/Data/DecisionDiagram/ZDD.hs index e70f679..559339a 100644 --- a/src/Data/DecisionDiagram/ZDD.hs +++ b/src/Data/DecisionDiagram/ZDD.hs @@ -75,6 +75,10 @@ module Data.DecisionDiagram.ZDD , mapDelete , change + -- * Fold + , fold + , fold' + -- * Minimal hitting sets , minimalHittingSets , minimalHittingSetsToda @@ -86,8 +90,6 @@ module Data.DecisionDiagram.ZDD -- * Misc , flatten - , fold - , fold' -- * Conversion , toListOfIntSets @@ -566,6 +568,10 @@ fromListOfSortedList = unions . map f f :: [Int] -> ZDD a f = ZDD . foldr (\x node -> Branch x F node) T +-- | Fold over the graph structure of the ZDD. +-- +-- It takes values for substituting 'empty' and 'base', +-- and a function for substiting non-terminal node. fold :: b -> b -> (Int -> b -> b -> b) -> ZDD a -> b fold ff tt br (ZDD node) = runST $ do h <- C.newSized defaultTableSize @@ -583,6 +589,7 @@ fold ff tt br (ZDD node) = runST $ do return ret f node +-- | Strict version of 'fold' fold' :: b -> b -> (Int -> b -> b -> b) -> ZDD a -> b fold' !ff !tt br (ZDD node) = runST $ do h <- C.newSized defaultTableSize