The second interesting project I worked on was Pureli, a project made as part of my CS degree.
Pureli is a purely functional, dynamically typed lisp with parallel evaluation (which isn't actually that important).
I built Gathering to learn more about webdev and to create a place for announcing online purescript gatherings (at the time) after meetup decided we shouldn't use it to announce online events (hello from 2021).
x86-debug is a (subset of) x86 asm interpreter, prettyprinter and step-debugger. I used it to debug/test a compiler I was building when I was learning about compilers
x86-debug has gdb-like introspection, breakpoints, and can step backwards as well!
Over I've written quite a few small games in several languages including C++, Haxe, Elm and Purescript.
With nyx-game I decided to take the plunge and build a bullet-hell game in Haskell using SDL2. I even commission the art and gave a talk about it
After writing a tutorial about building a bulletin board with scotty, I created a more featureful bulletin board website to hopefully provide a more complete example for learners.
The Giml website is also built with a very simple static website generator I hacked in a weekend. It uses toml, markdown and mustache templates, and is called tapir.
Something you might notice about my projects is that I usually work on them to scratch an itch, learn something new, or both. They are usually small and self contained.
You might also notice that I hardly use type-level programming.
Hope this was interesting!
17 / 17
• • •
Missing some Tweet in this thread? You can try to
force a refresh
A few things I learned from functional programming and Haskell, a thread. 🧵 1/N
Referential transparency is freeing.
I can trust code and not be surprised by effects, and use substitution to understand what's going on. I feel like I can always understand how something works in the end because I have a simple process to figure things out.
2/N
(First class) functions are really flexible.
This one simple concept can be used to model so many ideas and approaches. From mapping inputs to outputs, to iteration, control flow, composition, state, strategies, dependency injection, abstractions and even data!
3/N