packages feed

signals-0.0.0.1: Backend/Struct.hs

{-# LANGUAGE GADTs              #-}
{-# LANGUAGE DeriveDataTypeable #-}

module Backend.Struct where

import Data.Typeable

--------------------------------------------------------------------------------
-- *
--------------------------------------------------------------------------------

data Empty a deriving Typeable

data Struct exp a
  where
    Leaf :: Typeable a => exp a -> Struct exp (Empty (exp a))
    Node :: Struct exp a
         -> Struct exp b
         -> Struct exp (a, b)
  deriving
    Typeable

--------------------------------------------------------------------------------
-- **