homepage: https://github.com/emilaxelsson/prelude-edsl
changelog-type: ''
hash: 1c18bc162ab4423f248ef2c4ff5de4b3695dc64e2a86772c6076454c8e4cb2a4
test-bench-deps: {}
maintainer: emax@chalmers.se
synopsis: An EDSL-motivated subset of the Prelude
changelog: ''
basic-deps:
  base: ! '>=4.8 && <4.9'
all-versions:
- '0.1'
- '0.1.1'
author: Emil Axelsson
latest: '0.1.1'
description-type: haddock
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-name: BSD3

Update from Hackage at 2015-11-24T17:37:03+0000
Update from Hackage at 2015-11-24T17:37:03+0000
