├── LICENSE ├── README.md └── SYNTAX.md /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 forest-lang 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # notes 2 | Notes from my research for forest-lang, mostly in the form of links to reference later. 3 | 4 | ### High level design inspiration 5 | 6 | * [Oberon – The Overlooked Jewel by Michael Franz](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.90.7173&rep=rep1&type=pdf) 7 | 8 | > In order to find the optimal cost/benefit ratio, Wirth used a highly intuitive metric, the origin of which is unknown to me but that may very well be Wirth’s own invention. He used the compiler’s self-compilation speed as a measure of the compiler’s quality. Considering that Wirth’s compilers were written in the languages they compiled, and that compilers are substantial and non-trivial pieces of software in their own right, this introduced a highly practical benchmark that directly contested a compiler's complexity against its performance. Under the self- compilation speed benchmark, only those optimizations were allowed to be incorporated into a compiler that accelerated it by so much that the intrinsic cost of the new code addition was fully compensated. 9 | 10 | * [Out of the Tar Pit](http://curtclifton.net/papers/MoseleyMarks06a.pdf) 11 | 12 | ### Lambda Calculus 13 | * [The Implementation of Functional Programming Languages](https://www.microsoft.com/en-us/research/uploads/prod/1987/01/slpj-book-1987-r90.pdf) 14 | * [An algorithm for optimal lambda calculus reduction](https://dl.acm.org/citation.cfm?id=96711) 15 | 16 | ### Data structures 17 | 18 | * [Implementing strings](http://beza1e1.tuxen.de/strings.html) 19 | 20 | ### Parsing 21 | 22 | * [Parsing: a timeline](https://jeffreykegler.github.io/personal/timeline_v3) 23 | * [A typed, algebraic approach to parsing](https://www.cl.cam.ac.uk/~nk480/parsing.pdf) 24 | * https://github.com/bellissimogiorno/nominal 25 | 26 | ### Types 27 | 28 | * [Programming with Abstract Data Types by Liskov & Zilles](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.136.3043&rep=rep1&type=pdf) 29 | * [Existential quantifiers in abstract data types](https://link.springer.com/chapter/10.1007/3-540-09510-1_7) 30 | * [Seven Sketches in Compositionality: An Invitation to Applied Category Theory](https://arxiv.org/pdf/1803.05316.pdf) 31 | * [Mathematical Logic in Computer Science](https://arxiv.org/pdf/1802.03292.pdf) 32 | * [Fused effect systems in Haskell](https://github.com/robrix/fused-effects) 33 | * [Simple explanation of Hindley Milner](https://eli.thegreenplace.net/2018/type-inference/) 34 | * [Simple explanation of type unification](https://eli.thegreenplace.net/2018/unification/) 35 | * [Jan's proposal to add Row Types to GHC](https://github.com/ghc-proposals/ghc-proposals/pull/180) 36 | * [Type driven development in Idris](https://www.youtube.com/watch?v=mOtKD7ml0NU&feature=youtu.be) 37 | * [A reckless introduction to Hindley-Milner type inference](http://reasonableapproximation.net/2019/05/05/hindley-milner.html) 38 | * [The Hindley-Milner Type Inference Algorithm](http://steshaw.org/hm/hindley-milner.pdf) 39 | * [Practical type inference for arbitrary-rank types](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/putting.pdf) 40 | 41 | ### Proofs 42 | 43 | * [Fiat: Deductive Synthesis of AbstractData Types in a Proof Assistant](http://plv.csail.mit.edu/fiat/papers/fiat-popl2015.pdf) 44 | * [Vellvm: Verified LLVM](https://www.cis.upenn.edu/~stevez/vellvm/) 45 | 46 | ### DOM 47 | 48 | * ["A Theory of Changes for Higher-Order Languages" by Cai, Gairrusso, Rendel and Ostermann.](https://arxiv.org/pdf/1312.0658.pdf) - found from https://github.com/paf31/purescript-firkin 49 | 50 | ### Modules 51 | 52 | * [1ML — core and modules united](https://people.mpi-sws.org/~rossberg/1ml/) 53 | 54 | ### Package Management 55 | 56 | * [A Peer-to-Peer Distribution System for 57 | Software Package Releases and Updates](http://www.cs.sfu.ca/~jcliu/Papers/apt-p2p.pdf) 58 | * [Secure ledgers don't require proof-of-work](https://pfrazee.github.io/blog/secure-ledgers-dont-require-proof-of-work) 59 | 60 | ### Tests 61 | 62 | * [Tools for Discovery, Refinement and Generalization of Functional Properties by Enumerative Testing](https://matela.com.br/paper/rudy-phd-thesis-2017.pdf) 63 | 64 | ### Memory management 65 | 66 | * [Floorplan: Spatial Layout in Memory Management Systems](https://conf.researchr.org/details/gpce-2019/gpce-2019-papers/6/Floorplan-Spatial-Layout-in-Memory-Management-Systems) 67 | -------------------------------------------------------------------------------- /SYNTAX.md: -------------------------------------------------------------------------------- 1 | One of the most controversial aspects of Forest is the user customizable projected syntax. 2 | 3 | In this document I'm going to collect anecdotal examples of problems I think this would solve: 4 | 5 | * [Use of unicode identifiers and custom unicode infix characters](https://www.reddit.com/r/haskell/comments/9abjn3/whats_the_consensus_on_unicode_symbols_these_days/) 6 | * https://soc.me/languages/stop-using-for-generics 7 | --------------------------------------------------------------------------------