]> Git — Sourcephile - haskell/symantic-base.git/blob - symantic-base.cabal
cabal: clean up and describe
[haskell/symantic-base.git] / symantic-base.cabal
1 cabal-version: 3.0
2 license: AGPL-3.0-or-later
3 name: symantic-base
4 -- PVP: +-+------- breaking API changes
5 -- | | +----- non-breaking API additions
6 -- | | | +--- code changes with no API change
7 version: 0.1.0.20210703
8 category: Data Structures
9 synopsis: Commonly useful symantics for Embedded Domain-Specific Languages (EDSL)
10 description:
11 This is a work-in-progress collection of basic tagless-final combinators,
12 along with some advanced utilities to exploit them.
13
14 * @Symantic.Typed@
15 is for combinators indexed by a single type.
16 * @Symantic.Dityped@
17 is for combinators indexed by an extensible function type,
18 used for typed formatting, enabling type safe dual interpreters à la printf and scanf.
19 Inspired by Oleg Kiselyov's [PrintScanF.hs](http://okmij.org/ftp/tagless-final/course/PrintScanF.hs).
20 For an example, see [symantic-http](https://hackage.haskell.org/package/symantic-http).
21 * @Symantic.{Typed,Dityped}.Lang@
22 gather commonly used tagless-final combinators
23 (the syntax part of symantics).
24 * @Symantic.Typed.Data@ is an interpreter enabling to pattern-match on combinators,
25 while keeping their extensibility.
26 * @Symantic.{Typed,Dityped}.Derive@
27 enable to give a default value to combinators which avoids boilerplate code
28 when implementing combinators for an interpreter is factorizable.
29 * @Symantic.Typed.ObserveSharing@
30 enables to observe Haskell @let@ definitions,
31 turning infinite values into finite ones,
32 which is useful to inspect and optimize recursive grammars for example.
33 Inspired by Andy Gill's [Type-safe observable sharing in Haskell](https://doi.org/10.1145/1596638.1596653).
34 For an example, see [symantic-parser](https://hackage.haskell.org/package/symantic-parser).
35 * @Symantic.Typed.Reify@
36 enables the lifting to any interpreter
37 of any Haskell functions taking as arguments
38 only polymorphic types (possibly constrained)
39 or functions using such types.
40 Inspired by Oleg Kiselyov's [TDPE.hs](http://okmij.org/ftp/tagless-final/course/TDPE.hs).
41 * @Symantic.Typed.View@
42 is an interpreter enabling to turn combinators into a human-readable string.
43 * @Symantic.Dityped.ADT@
44 enables to define formats à la printf-scanf
45 using data-constructors instead of @Either@s of tuples.
46 For an example, see [symantic-atom](https://hackage.haskell.org/package/symantic-atom).
47 * @Symantic.Dityped.CurryN@
48 gather utilities for currying or uncurrying tuples
49 of size greater or equal to 2.
50 * @Symantic.Typed.Fixity@
51 gathers utilities for parsing or viewing
52 infix, prefix and postfix combinators.
53 stability: experimental
54 author: Julien Moutinho <julm+symantic-base@sourcephile.fr>
55 maintainer: Julien Moutinho <julm+symantic-base@sourcephile.fr>
56 bug-reports: https://mails.sourcephile.fr/inbox/symantic-base
57 copyright: Julien Moutinho <julm+symantic-base@sourcephile.fr>
58
59 build-type: Simple
60 tested-with: GHC==8.10.4
61 extra-source-files:
62 cabal.project
63 default.nix
64 .envrc
65 flake.lock
66 flake.nix
67 Makefile
68 extra-tmp-files:
69
70 source-repository head
71 type: git
72 location: git://git.sourcephile.fr/haskell/symantic-base
73
74 library
75 hs-source-dirs: src
76 exposed-modules:
77 Symantic.Dityped
78 Symantic.Dityped.ADT
79 Symantic.Dityped.CurryN
80 Symantic.Dityped.Derive
81 Symantic.Dityped.Lang
82 Symantic.Typed
83 Symantic.Typed.Data
84 Symantic.Typed.Derive
85 Symantic.Typed.Fixity
86 Symantic.Typed.Lang
87 Symantic.Typed.ObserveSharing
88 Symantic.Typed.Optimize
89 Symantic.Typed.Reify
90 Symantic.Typed.View
91 default-language: Haskell2010
92 default-extensions:
93 DefaultSignatures
94 FlexibleContexts
95 FlexibleInstances
96 GeneralizedNewtypeDeriving
97 LambdaCase
98 MultiParamTypeClasses
99 NamedFieldPuns
100 NoImplicitPrelude
101 RecordWildCards
102 ScopedTypeVariables
103 TupleSections
104 TypeApplications
105 TypeFamilies
106 TypeOperators
107 ghc-options:
108 -Wall
109 -Wincomplete-uni-patterns
110 -Wincomplete-record-updates
111 -Wpartial-fields
112 -fprint-potential-instances
113 build-depends:
114 base >= 4.10 && < 5,
115 containers,
116 hashable,
117 template-haskell,
118 transformers,
119 unordered-containers