hobbits-1.2: Data/Binding/Hobbits/Internal/Closed.hs
{-# LANGUAGE TemplateHaskell, ViewPatterns #-}
-- |
-- Module : Data.Binding.Hobbits.Closed
-- Copyright : (c) 2014 Edwin Westbrook, Nicolas Frisby, and Paul Brauner
--
-- License : BSD3
--
-- Maintainer : emw4@rice.edu
-- Stability : experimental
-- Portability : GHC
--
-- This module defines the type @'Cl' a@ of closed objects of type
-- @a@. Note that, in order to ensure adequacy of the Hobbits
-- name-binding approach, this representation is hidden from the user,
-- and so this file should never be imported directly by the user.
--
module Data.Binding.Hobbits.Internal.Closed where
{-|
The type @Cl a@ represents a closed term of type @a@,
i.e., an expression of type @a@ with no free (Haskell) variables.
Since this cannot be checked directly in the Haskell type system,
the @Cl@ data type is hidden, and the user can only create
closed terms using Template Haskell, through the 'cl' operator.
-}
newtype Cl a = Cl { unCl :: a }