forked from Orchid/orchid
Final commit before submission
This commit is contained in:
@@ -6,14 +6,10 @@ In addition the handling of all syntax sugar is delegated to the compiler. This
|
||||
|
||||
**Syntax-level metaprogramming:** [Template Haskell][th1] is Haskell's tool for syntax-level macros. I learned about it after I built Orchid, and it addresses a lot of my problems.
|
||||
|
||||
[th1]: https://wiki.haskell.org/Template_Haskell
|
||||
[th1]: ./literature/macros.md
|
||||
|
||||
**Type system:** Haskell's type system is very powerful but to be able to represent some really interesting structures it requires a long list of GHC extensions to be enabled which in turn make typeclass implementation matching undecidable and the heuristic rather bad (understandably so, it was clearly not designed for that; it wasn't really even designed to be a heuristic).
|
||||
**Type system:** Haskell's type system is very powerful but to be able to represent some really interesting structures it requires a long list of GHC extensions to be enabled which in turn make typeclass implementation matching undecidable and the heuristic rather bad (understandably so, it was clearly not designed for that).
|
||||
|
||||
My plan for Orchid was to use Orchid itself as a type system as well; rather than aiming for a decidable type system and then extending it until it [inevitably][tc1] [becomes][tc2] [turing-complete][tc3], my type-system would be undecidable from the start and progress would point towards improving the type checker to recognize more and more cases.
|
||||
|
||||
[tc1]: https://en.cppreference.com/w/cpp/language/template_metaprogramming
|
||||
[tc2]: https://blog.rust-lang.org/2022/10/28/gats-stabilization.html
|
||||
[tc3]: https://wiki.haskell.org/Type_SK
|
||||
My plan for Orchid was to use Orchid itself as a type system as well; rather than aiming for a decidable type system and then extending it until it inevitably becomes turing-complete [1][2][3], my type-system would be undecidable from the start and progress would point towards improving the type checker to recognize more and more cases.
|
||||
|
||||
A description of the planned type system is available in [[type_system/+index|Appendix T]]
|
||||
Reference in New Issue
Block a user