hobbits-1.2.1: Data/Binding/Hobbits.hs
{-# LANGUAGE TypeOperators #-}
-- |
-- Module : Data.Binding.Hobbits
-- Copyright : (c) 2011 Edwin Westbrook, Nicolas Frisby, and Paul Brauner
--
-- License : BSD3
--
-- Maintainer : emw4@rice.edu
-- Stability : experimental
-- Portability : GHC
--
-- This library implements multi-bindings as described in the paper
-- E. Westbrook, N. Frisby, P. Brauner, \"Hobbits for Haskell: A Library for
-- Higher-Order Encodings in Functional Programming Languages\".
module Data.Binding.Hobbits (
-- * Values under multi-bindings
module Data.Binding.Hobbits.Mb,
-- | The 'Data.Binding.Hobbits.Mb.Mb' type modeling multi-bindings is the
-- central abstract type of the library
-- * Closed terms
module Data.Binding.Hobbits.Closed,
-- | The 'Data.Binding.Hobbits.Closed.Cl' type models
-- super-combinators, which are safe functions to apply under
-- 'Data.Binding.Hobbits.Mb.Mb'.
-- * Pattern-matching multi-bindings and closed terms
module Data.Binding.Hobbits.QQ,
-- | The 'Data.Binding.Hobbits.QQ.nuP' quasiquoter allows safe pattern
-- matching on 'Data.Binding.Hobbits.Mb.Mb'
-- values. 'Data.Binding.Hobbits.QQ.superCombP' is similar.
-- * Lifting values out of multi-bindings
module Data.Binding.Hobbits.Liftable,
-- * Ancilliary modules
module Data.Proxy, module Data.Type.Equality,
module Data.Type.RList,
-- | Type lists track the types of bound variables.
module Data.Binding.Hobbits.NuMatching
-- | The "Data.Binding.Hobbits.NuMatching" module exposes the
-- | NuMatching class, which allows pattern-matching on (G)ADTs in
-- | the bodies of multi-bindings
) where
import Data.Proxy
import Data.Type.Equality
import Data.Type.RList
import Data.Binding.Hobbits.Mb
import Data.Binding.Hobbits.Closed
import Data.Binding.Hobbits.QQ
import Data.Binding.Hobbits.Liftable
import Data.Binding.Hobbits.NuMatching