syfco-1.1.0.0: src/Data/Binding.hs
-----------------------------------------------------------------------------
-- |
-- Module : Data.Binding
-- License : MIT (see the LICENSE file)
-- Maintainer : Felix Klein (klein@react.uni-saarland.de)
--
-- A data type to store an identifier bound to an expression.
--
-----------------------------------------------------------------------------
module Data.Binding
( Binding
, BindExpr(..)
) where
-----------------------------------------------------------------------------
import Data.Expression
( Expr
, ExprPos
)
-----------------------------------------------------------------------------
-- | We use the type @Binding@ as a shortcut for a binding of an expression
-- to an integer.
type Binding = BindExpr Int
-----------------------------------------------------------------------------
-- | The data type @Bind a@ expresses a binding of some instance of type
-- @a@ to some expression. The identifiers inside this expression need to
-- be represented by instances of type @a@ as well. Finally, a binding also
-- containts the source position of the bound identifier as well as possible
-- arguments in case the bindings represents a function.
data BindExpr a =
BindExpr
{ bIdent :: a
, bArgs :: [(a,ExprPos)]
, bPos :: ExprPos
, bVal :: [Expr a]
} deriving (Show)
-----------------------------------------------------------------------------