name: prelude-edsl
version: 0.2
synopsis: An EDSL-motivated subset of the Prelude
description: "Prelude.EDSL" exports a small subset of the "Prelude":
some standard types and classes plus a small number of
convenience functions.
.
The motivation for this module is that it is common for
deeply embedded domain-specific languages (EDSLs) to
redefine identifiers from the "Prelude", so EDSL users must
hide the "Prelude" in their programs. However, there are
certain useful things from the "Prelude" that are usually
not redefined -- function composition being one example --
so it becomes quite awkward to have to hide everything from
the "Prelude".
.
The reason for exporting e.g the @Num@ class but not @Ord@
is that it is possible to give an instance for deep
embeddings of the former but not the latter. For example,
assuming @Exp@ is the type of a deep embedding, we can have
.
> (+) :: Exp -> Exp -> Exp
.
but not
.
> (<) :: Exp -> Exp -> Exp
.
(because @(<)@ has a @Bool@ result, regardless of the type
of the arguments).
license: BSD3
license-file: LICENSE
author: Emil Axelsson
maintainer: emax@chalmers.se
copyright: Copyright (c) 2015, Emil Axelsson
homepage: https://github.com/emilaxelsson/prelude-edsl
bug-reports: https://github.com/emilaxelsson/prelude-edsl/issues
category: Language
build-type: Simple
cabal-version: >=1.10
source-repository head
type: git
location: git@github.com:emilaxelsson/prelude-edsl.git
library
exposed-modules: Prelude.EDSL
build-depends: base <20
default-language: Haskell2010