Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/paf31/dovetail
A PureScript interpreter in Haskell
https://github.com/paf31/dovetail
haskell purescript
Last synced: 10 days ago
JSON representation
A PureScript interpreter in Haskell
- Host: GitHub
- URL: https://github.com/paf31/dovetail
- Owner: paf31
- License: bsd-3-clause
- Created: 2021-07-15T01:14:32.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-05-07T04:36:20.000Z (over 2 years ago)
- Last Synced: 2024-10-11T23:54:03.546Z (25 days ago)
- Topics: haskell, purescript
- Language: Haskell
- Homepage: http://functorial.com/dovetail
- Size: 2.27 MB
- Stars: 119
- Watchers: 3
- Forks: 3
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Dovetail
Dovetail is a general-purpose PureScript interpreter written in Haskell.
It has excellent support for interop with Haskell code via PureScript's foreign function interface, along with a high-level Haskell API for integrating such code.
As such, it is possible to write low-level or domain-specific code in Haskell, and then to write the "glue code" in PureScript. In this way, Dovetail is a tool for reusing the frontend of the PureScript compiler (its syntax and type checker) to build domain specific languages in Haskell.
## Getting Started
To understand the library and how to use it, it is recommended that you read through the Haddock documentation, alongside the provided examples:
- Hackage documentation
- [`dovetail` on Hackage](https://hackage.haskell.org/package/dovetail)
- [`dovetail-aeson` on Hackage](https://hackage.haskell.org/package/dovetail-aeson)
- [Haddocks on GitHub Pages](http://functorial.com/dovetail)
- Examples:
- [JSON query language](https://github.com/paf31/dovetail/blob/main/examples/query-json/Main.hs)
- [Fake data generator](https://github.com/paf31/dovetail/blob/main/examples/fake-data/Main.hs)
You can build the code and examples in this repository using `stack build`, and run the test suite with `stack test`.