1
Fork 0

Document purescript experiments

This commit is contained in:
Matei Adriel 2023-10-29 01:13:57 +02:00
parent ae1141ae39
commit 14461ac786
6 changed files with 74 additions and 6 deletions

19
purescript/README.md Normal file
View file

@ -0,0 +1,19 @@
# Purescript
| Name | Description |
| ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| [abilities](./abilities/) | Typeclass-dictionary abuse enabling the creation of a barebones effect system |
| [bug](./bug/) | Unknown reason of existence |
| [canopy](./canopy/) | Unfinished attempt at writing a [Diplomacy](<https://en.wikipedia.org/wiki/Diplomacy_(game)>) adjudecation engine |
| [compose](./compose/) | Overload do-notation for function composition and existential types |
| [ecs](./ecs/) | Purescript-wrapper for [thi.ng/ecs](thi.ng/ecs) |
| [existentials-blog](./existentials-blog) | Perhaps supposed to turn into a blog about existentials? |
| [existentials](./existentials) | Experiment regarding the Church-encoding of existential types |
| [gadts](./gadts) | Experiment regarding ways to encode GADTs in Purescript |
| [lune](./lune) | Failed effect-system project |
| [maps](./maps) | Attempt at implementing maps with membership proofs |
| [proofs](./proofs) | Attempt at expressing mathematical proofs using Purescript's effect system |
| [purpleflow](./purpleflow) | Unfinished dependently-typed programming language |
| [sprint](./sprint) | Failled effect-system based on typelevel lists |
| [streams](./streams) | Playing with `purescript-pipes` |
| [typelevel](./typelevel) | Typelevel naturals, vectors, sum-types, orderings and lambda-calculus evaluation and a value-level bounded-type GADT |

View file

@ -0,0 +1,12 @@
# Abilities
Implementation of my idea of abusing typeclass-dictionaries in order to create a barebones effect system.
## File structure
| File | Description |
| -------------------------------------- | ---------------------------------------------------------------- |
| [Abilities.purs](./src/Abilities.purs) | Overloaded pure do-notation enabling implicit dictionary passing |
| [Ask.purs](./src/Ask.purs) | Reader-monad effect |
| [Io.purs](./src/Ask.purs) | IO-monad effect |
| [Main.purs](./src/Main.purs) | Demo showcasing usage of `IO` together with `Ask` |

View file

@ -4,9 +4,9 @@ This directory contains an (unfinished) attempt at writing a [Diplomacy](<https:
## File structure ## File structure
| File | Description | | File | Description |
| ------------------------------------ | ------------------------------------------------------------------------------ | | ---------------------------------------- | ------------------------------------------------------------------------------ |
| [Tagless.purs](./src/Tagless.purs) | Experiments regarding tagless representations of inductive types | | [Tagless.purs](./src/Tagless.purs) | Experiments regarding tagless representations of inductive types |
| [Graph.purs](./src/Graph.purs) | Simple directed-graph type | | [Graph.purs](./src/Graph.purs) | Simple directed-graph type |
| [DipMap.purs](./src/DipMap.purs) | Representation for diplomacy maps | | [DipMap.purs](./src/DipMap.purs) | Representation for diplomacy maps |
| [DipMap.purs](./src/Adjudecate.purs) | Types for logical propositions. The adjudecation logic was supposed to go here | | [Adjudecate.purs](./src/Adjudecate.purs) | Types for logical propositions. The adjudecation logic was supposed to go here |

View file

@ -0,0 +1,13 @@
# Compose
Overload do-notation for:
- function composition
- usage of existential types
## File structure
| File | Description |
| ---------------------------------- | ------------------------------------------- |
| [Compose.purs](./src/Compose.purs) | Function composition do-notation |
| [Main.purs](./src/Main.purs) | Demo usage and existential-type do-notation |

10
purescript/ecs/README.md Normal file
View file

@ -0,0 +1,10 @@
# Ecs
Purescript-wrapper for [thi.ng/ecs](thi.ng/ecs)
## File structure
| File | Description |
| ---------------------------------- | ------------------------------------------------------- |
| [Types.purs](./src/Types.purs) | Type definitions |
| [Keys.purs](./src/Utils/Keys.purs) | Extract value-level arrays containing the keys of a row |

View file

@ -0,0 +1,14 @@
# Typelevel
Experiments in the realm of typelevel Purescript computation.
## File structure
| File | Description |
| ------------------------------------ | -------------------------------------------------- |
| [Ast.purs](./src/Ast.purs) | Typelevel sum-types and a bit of typelevel parsing |
| [Num.purs](./src/Num.purs) | Typelevel naturals |
| [Vec.purs](./src/Vec.purs) | Typelevel fixed-size lists |
| [Ordering.purs](./src/Ordering.purs) | Typelevel orderings |
| [Term.purs](./src/Term.purs) | Typelevel lambda-calculus evaluation |
| [Fin.purs](./src/Fin.purs) | Bounded naturals using a GADT representation |