An open API service indexing awesome lists of open source software.

https://github.com/lexi-lambda/th-to-exp

Deprecated. Use Language.Haskell.TH.Syntax.Lift instead.
https://github.com/lexi-lambda/th-to-exp

Last synced: 2 months ago
JSON representation

Deprecated. Use Language.Haskell.TH.Syntax.Lift instead.

Awesome Lists containing this project

README

        

# th-to-exp [![Build Status](https://travis-ci.org/lexi-lambda/th-to-exp.svg?branch=master)](https://travis-ci.org/lexi-lambda/th-to-exp)

`th-to-exp` is a package that provides a way to persist data from compile-time to runtime by producing Template Haskell expressions that evaluate to particular values. For example, if you have a value `Just 1`, then `toExp (Just 1)` will produce the *expression* `[e| Just 1 |]`, which can be used in a splice. For a more direct example, here’s what that looks like without the quasiquote notation:

```haskell
> toExp (Just 1)
AppE (ConE GHC.Base.Just) (LitE (IntegerL 1))
```

This is done by using a typeclass, `ToExp`, that can be automatically derived for types that have a `Generic` instance.