{-# OPTIONS_GHC -fno-warn-unused-imports #-} module DemoBools (render) where import Prelude (String, fst, snd, ($), return) import Control.Monad (forM_) import Bools type Writer a = (String, a) tell :: String -> Writer (); tell x = (x, ()) execWriter :: Writer a -> String; execWriter = fst render :: Bools -> String render z_root = execWriter $ do tell "Not\n" tell "===\n" tell "\n" forM_ (boolsBools z_root) $ \z_var0_b -> do tell "not " if z_var0_b then do tell "1" return () else do tell "0" return () tell " = " if (boolsNot z_root z_var0_b) then do tell "1" return () else do tell "0" return () tell "\n" tell "\n" tell "And\n" tell "===\n" tell "\n" forM_ (boolsBools z_root) $ \z_var1_x -> do forM_ (boolsBools z_root) $ \z_var2_y -> do tell "and " if z_var1_x then do tell "1" return () else do tell "0" return () tell " " if z_var2_y then do tell "1" return () else do tell "0" return () tell " = " if (boolsAnd z_root z_var1_x z_var2_y) then do tell "1" return () else do tell "0" return () tell "\n"