Projects :¶
Here are the projects I'm currently working on
- Myrmidon A programming language leveraging QTT to control partial evaluation
- Open servers A Library to write web servers using lenses
- Open Games An programming language to write Open Games
- Idris Profficiency A short tutorial to get started with Idris
- Servers Lens tutorial A tutorial about open-servers as a library
Done:¶
Mailbox¶
- [-] Reproduce bug about namespaces and non-total functions at typechecking
- NOTE: If you implement a function
finside a moduleNSand you create an additional namespaceNSinside your module and have another functionfinside it. Then implementing the nestedf(NS.NS.f) asf = NS.fwon't refer to thefat the top level module, but will refer to itself. This is obviously not total, and if you callNS.NS.fthen it will loop forever. IfNS.NS.fhappens to occur at compile-time, the typechecker will hang forever. - NOTE: I gave up, it takes too much time and it's too finnicky.
- NOTE: If you implement a function
- Fix prolude with latest Idris version ✅ 2021-12-07
- install LSP ✅ 2021-12-05
- fix the injection PR ✅ 2021-11-10
- fix the parser PR ✅ 2021-11-10
- 1 install Scala 3
- 1.1 implement STLC with Match types ??? -- didn't work
- 2 figure out a DSL for programs
- 2.5 Check the injectivity pull request
- 2.6 Finish the dev notes about Idris2
- 2.7 Write the documentation for string interpolation concat
- fix the PR about injection ✅ 2021-11-23
- move all NPL Org into gitlab
- Complete linear PR ✅ 2022-01-31
- Write abstract for Dependent types talk in March ✅ 2022-02-05
3 Myrmidon language¶
- 3.1 finish the parser (15.11.2021)
- 3.2 add Nat (14.11.2021)
- 3.6 compile surface syntax into AST
- 3.7 Add grades (14.12.2021)
- 3.7.1 fix typechecker (16.11.2021)
- 3.7.2 fix subst (17.11.2021)
- 3.7.3 fix Quoting (17.11.2021)
- 3.7.4 Abstract over the grades in context (14.12.2021)
- NOTE: this was already done but I just noticed today ✅ 2021-12-14
- 3.9 Add a Scheme codegen ✅ 2022-01-04
5 OpenGames things¶
- 5.1 use mwc-prob to port to singletons
- NOTE: it didn't work because singletons cannot promote constrained constructors
- NOTE: Maybe worth porting the probability library without mwc-prob
- 5.2 use mwc-prob to port to Idris
- NOTE: didn't work either
- NOTE: (09.12.2021) I don't remember what this is
- 5.4 Port the preprocessor to the updated version (13.12.2021)
6 Open-Servers¶
- 6.1 port the core logic to indexed paths
- 6.3 change type of GET request to implement lenses instead of functions to lenses (07.12.2021 - in reality done much earlier but I forgot to track the change)
- 6.4 implement the dep-lens EDSL (07.12.2021)
- NOTES: kind of works but is blocked by 6.6
- 6.6 Implement servers as Dependent Para lenses (09.01.2022)
- 6.6.1 implement server as a dependent lens rather than rely on the DSL (18.12.2021)
- 6.6.2 Implement routing as products of extended lenses rather than rely on
Strpath components (21.01.2022) - 6.6.3 Fix an issue where the state could not be update because it depends on the input type of the request (01.01.2022)
- 6.6.4 Fix issue with dependent lenses where
compositionwould not terminate (03.01.2022) - 6.6.5 Implement the missing dependent interfaces dependening on
server, aka implementinstanceLens(05.01.2022) - 6.6.6 reimplement server as external choice of existing servers (05.01.2022)
- COMMIT: e5995e537c2990
- 6.6.7 Implement a server as external choice but with a top level path (05.01.2022)
- NOTE: AKA
/lights ╶┬╴/kitchen └╴/bedroom - COMMIT: 7f1260385e
- 6.6.8 Rewrite a DSL for dependent para lens and give it a
ServerInstanceimplementation ^5e3aef (06.01.2022) - NOTE: It's working but two things are strange:
- we need some sort of
Updateinterface which ensures we can update the final state from some substate - Our
Stateconstructor requires the overall state to be parsable but that is not necessary if we don't expose thePOSTpart of the endpoint
- we need some sort of
- 6.6.9 Fix the MR review comments (09.01.2022)
- 6.10 Make it possible to have endpoints with arguments in the middle
7 Data generic programming¶
- 7.1 implement in terms of CFTprogramming (10.11.2021)
- 7.2 implement in terms of typedefs (10.11.2021)
- NOTE: didn't work because typedefs are broken
- 7.5 write the blog post about SplitN (10.11.2021)
8 Idris proefficiency tutorial¶
- 8.1 collect funtions from last AOC (14.11.2021)
- 8.2 store helper functions in a library (23.11.2021)
- 8.2.1 queues and zippers (16.11.2021)
- 8.2.2 n-dimensional spaces (23.11.2021)
- 8.2.3 binary manipulation (23.11.2021)
- 8.2.4 Cryptography (23.11.2021)
9 Graphics¶
- 9.2 Draw logo for myrmidon
10 OPLSS¶
- Understand and write about W-types
- containers <-> Polynomial functors
- Write n-ary functors
- Link up fixpoints of containers with fixpoints of polynomial functors and recover cata from it
- Metamorphisms
- Check if stream can use
Listinstead ofMaybefor non-deterministic buffers - Check if it can work on any
1 + nfunctor so you can have non-determinism on trees
- Check if stream can use
- Sequent calculus
- Categorical semantics
- implement SC in agda/Idris
- product and co-products aren't symetric???
- Reading
- Review Clowns to the left, jokers to the right
- Review Fractional types from Dorchard
- Review Composing Bidirectional programs monadically
- Implement Jeremy's paper about breath-first search tree-traversal
- Could this be used for a more general version of traversing data structures without respecting their original definitions?
- Figure out the link between zippers and lenses
- Any link with derivatives?
- Merge
oplsslensesandpolyfromNekointoTypesLab - Merge
oplssandstate-machinesfrom algae intoTypesLab