{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module DemoFancy (render) where
import Prelude (String, fst, snd, ($), return)
import Control.Monad (forM_)
import Fancy
import qualified Data.Map.Strict as Map
type Writer a = (String, a)
tell :: String -> Writer (); tell x = (x, ())
execWriter :: Writer a -> String; execWriter = fst
render :: Fancy -> String
render z_root = execWriter $ do
  tell (fancyString z_root)
  tell "\n"
  if (fancyBoolA z_root)
  then do
    forM_ (Map.toList (fancyMap z_root)) $ \z_var0_kv -> do
      tell (fst z_var0_kv)
      tell " -- "
      tell (snd z_var0_kv)
      tell "\n"
    return ()
  else do
    if (fancyNot z_root (fancyNot z_root (fancyBoolB z_root)))
    then do
      tell "Another output\n"
      return ()
    else do
      tell "Third branch\n"
      return ()
    return ()