symantic-base: Basic symantic combinators for Embedded Domain-Specific Languages (EDSL)
This is a work-in-progress collection of basic tagless-final combinators,
along with some advanced utilities to exploit them.
* Symantic.Syntaxes.Classes
gathers commonly used tagless-final combinators
(the syntax part of symantics).
* Symantic.Syntaxes.Data
interprets combinators as data constructors
enabling to pattern-match on combinators while keeping their extensibility.
* Symantic.Syntaxes.Derive
to give a default value to combinators which avoids boilerplate code
when implementing combinators for an interpreter is factorizable.
* Symantic.Syntaxes.EithersOfTuples
leverages GHC.Generics
to generate reciprocal functions
between algebraic data type constructors and Eithers-of-Tuples.
* Symantic.Syntaxes.TuplesOfFunctions
enables the use of Tuples-of-Functions
instead of Eithers-of-Tuples.
* Symantic.Syntaxes.CurryN
gathers utilities for currying or uncurrying tuples
of size greater or equal to two.
* Symantic.Semantics.SharingObserver
interprets combinators to observe let
definitions
at the host language level (Haskell),
effectively turning infinite values into finite ones,
which is useful for example to inspect
and optimize recursive grammars.
Inspired by Andy Gill's Type-safe observable sharing in Haskell.
For an example, see symantic-parser.
* Symantic.Semantics.ToFer
interprets combinators to return Tuples-of-Functions
instead of Eithers-of-Tuples.
* Symantic.Semantics.Viewer
interprets combinators as human-readable text.
* Symantic.Semantics.Viewer.Fixity
gathers utilities for parsing or viewing
infix, prefix and postfix combinators.
* Symantic.Syntaxes.Reader
is an intermediate interpreter enabling to change
the syntax combinators using an environment.
* Symantic.Utils.Reify
enables the lifting to any interpreter
of any Haskell functions taking as arguments
only polymorphic types (possibly constrained)
or functions using such types.
Inspired by Oleg Kiselyov's TDPE.hs.
Downloads
- symantic-base-0.5.0.20221211.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
Versions [RSS] | 0.0.0.20200708, 0.0.1.20200708, 0.0.2.20200708, 0.1.0.20210703, 0.2.0.20210731, 0.2.0.20210831, 0.3.0.20211007, 0.4.0.20211106, 0.5.0.20221211 |
---|---|
Change log | ChangeLog.md |
Dependencies | base (>=4.10 && <5), containers, hashable, template-haskell, transformers, unordered-containers [details] |
Tested with | ghc ==8.10.4 |
License | AGPL-3.0-or-later |
Copyright | Julien Moutinho <julm+symantic-base@sourcephile.fr> |
Author | Julien Moutinho <julm+symantic-base@sourcephile.fr> |
Maintainer | mailto:symantic-base@sourcephile.fr |
Category | Data Structures |
Home page | https://git.sourcephile.fr/haskell/symantic-base |
Bug tracker | https://mails.sourcephile.fr/inbox/symantic-base |
Source repo | head: git clone git://git.sourcephile.fr/haskell/symantic-base |
Uploaded | by julm at 2023-01-25T00:57:24Z |
Distributions | NixOS:0.5.0.20221211 |
Reverse Dependencies | 2 direct, 1 indirect [details] |
Downloads | 1024 total (23 in the last 30 days) |
Rating | (no votes yet) [estimated by Bayesian average] |
Your Rating | |
Status | Docs uploaded by user Build status unknown [no reports yet] |