{-# LANGUAGE NoMonomorphismRestriction #-}
{-# LANGUAGE TemplateHaskell #-}
module Parsers.Playground where

import Symantic.Parser
import qualified Symantic.Lang as Prod

boom :: CombApplicable repr => repr ()
boom :: forall (repr :: * -> *). CombApplicable repr => repr ()
boom =
  let foo :: repr ()
foo = (-- newRegister_ unit (\r0 ->
       let goo :: repr b
goo = (-- newRegister_ unit (\r1 ->
             let hoo :: repr Any
hoo = {-get r0 <~> get r1 *>-} repr b
goo repr b -> repr Any -> repr Any
forall (repr :: * -> *) a b.
CombApplicable repr =>
repr a -> repr b -> repr b
*> repr Any
hoo in repr Any
hoo
            ) repr Any -> repr b -> repr b
forall (repr :: * -> *) a b.
CombApplicable repr =>
repr a -> repr b -> repr b
*> repr b
goo
       in repr Any
forall {repr :: * -> *} {b}. CombApplicable repr => repr b
goo) repr Any -> repr () -> repr ()
forall (repr :: * -> *) a b.
CombApplicable repr =>
repr a -> repr b -> repr b
*> Production () -> repr ()
forall (repr :: * -> *) a.
CombApplicable repr =>
Production a -> repr a
pure Production ()
forall (repr :: * -> *). Constantable () repr => repr ()
Prod.unit
  in repr ()
forall (repr :: * -> *). CombApplicable repr => repr ()
foo repr () -> repr () -> repr ()
forall (repr :: * -> *) a b.
CombApplicable repr =>
repr a -> repr b -> repr b
*> repr ()
forall (repr :: * -> *). CombApplicable repr => repr ()
foo