lean4-raytracer
lean4-metaprogramming-book
lean4-raytracer | lean4-metaprogramming-book | |
---|---|---|
2 | 1 | |
113 | 195 | |
- | 1.0% | |
3.5 | 8.2 | |
5 months ago | 9 days ago | |
Lean | Lean | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
lean4-raytracer
-
Functional Programming in Lean – a book on using Lean 4 to write programs
Lean is currently moving to the 4th iteration which is the first intended to be a general-purpose programming language. It "is currently being released as milestone releases towards a first stable release". For now the main goal is to port mathlib to the new version, and then they will concentrate on the compiler. So it is not production ready. But that doesn't mean it is not suitable for building any programs now. There is a simple raytracer written in Lean [1]. I have built a chip8 interpreter with it and the only problem was the lack of an ecosystem, meaning I had to build the necessary libraries myself.
Now it has a RC GC and boxes everything >= 64 bits, and as the compiler isn't polished it is probably significantly slower. In the referenced raytracer repo you can find rendering time compared to the C implementation (Lean is 25x slower, but that was a year ago).
[1] https://github.com/kmill/lean4-raytracer
- A simple ray tracer in Lean 4
lean4-metaprogramming-book
-
Macro-ts: TypeScript compiler with typesafe syntactic macros (2022)
Lean4 manages to pull off changing the parser on the fly at compile time. You can add new productions, add new syntax node types, and add new tokens. Then define macros or code to process the additional syntax. Here is a sample I found that adds a simple JSX-like syntax starting around line 93 and then uses it at line 169:
https://github.com/leanprover/lean4/blob/master/tests/playgr...
I believe most of the language is defined this way, although it is pre-compiled.
For more details see the lean4 metaprogramming book: https://github.com/arthurpaulino/lean4-metaprogramming-book
What are some alternatives?
lean4-mode - Emacs major mode for Lean 4
tinyraytracer - A brief computer graphics / rendering course
mathlib4 - The math library of Lean 4
lean4 - Lean 4 programming language and theorem prover
WickedEngine - 3D engine with modern graphics