2 license: AGPL-3.0-or-later
4 -- PVP: +-+------- breaking API changes
5 -- | | +----- non-breaking API additions
6 -- | | | +--- code changes with no API change
7 version: 0.2.0.20210726
8 category: Data Structures
9 synopsis: Commonly useful symantics for Embedded Domain-Specific Languages (EDSL)
11 This is a work-in-progress collection of basic tagless-final combinators,
12 along with some advanced utilities to exploit them.
15 gathers commonly used tagless-final combinators
16 (the syntax part of symantics).
17 * @Symantic.Data@ is an interpreter enabling to pattern-match on combinators,
18 while keeping their extensibility.
20 enables to give a default value to combinators which avoids boilerplate code
21 when implementing combinators for an interpreter is factorizable.
22 * @Symantic.ObserveSharing@
23 enables to observe Haskell @let@ definitions,
24 turning infinite values into finite ones,
25 which is useful to inspect and optimize recursive grammars for example.
26 Inspired by Andy Gill's [Type-safe observable sharing in Haskell](https://doi.org/10.1145/1596638.1596653).
27 For an example, see [symantic-parser](https://hackage.haskell.org/package/symantic-parser).
29 enables the lifting to any interpreter
30 of any Haskell functions taking as arguments
31 only polymorphic types (possibly constrained)
32 or functions using such types.
33 Inspired by Oleg Kiselyov's [TDPE.hs](http://okmij.org/ftp/tagless-final/course/TDPE.hs).
35 is an interpreter enabling to turn combinators into a human-readable string.
37 enables to derive reciprocal functions between
38 data-constructors and @Either@s of tuples.
40 gathers utilities for currying or uncurrying tuples
41 of size greater or equal to 2.
43 gathers utilities for parsing or viewing
44 infix, prefix and postfix combinators.
45 stability: experimental
46 author: Julien Moutinho <julm+symantic-base@sourcephile.fr>
47 maintainer: Julien Moutinho <julm+symantic-base@sourcephile.fr>
48 bug-reports: https://mails.sourcephile.fr/inbox/symantic-base
49 copyright: Julien Moutinho <julm+symantic-base@sourcephile.fr>
52 tested-with: GHC==8.10.4
62 source-repository head
64 location: git://git.sourcephile.fr/haskell/symantic-base
76 Symantic.ObserveSharing
80 default-language: Haskell2010
85 GeneralizedNewtypeDeriving
98 -Wincomplete-uni-patterns
99 -Wincomplete-record-updates
101 -fprint-potential-instances