Tools of the trade
Libraries
We have to evolve our own libs. Ripping off is ok once you understand the abstractions.
Most of the time one can just make one’s own “stdlib” by copying the code of what you actually use.
It turns out that 90% of the low effort crappy abstractions could be stripped off and simplified to the mathematical essence.
If you don’t see how to de-bloat and simplify - reuse it by vendoring.
FFI highly specialized code.
Tools of the trade
Neovim + language servers
- Quick in-place editing.
- Evolved, consistent single-key commands is a miracle.
- The “Lua revolution” is a good thing.
Configurations
They mostly copy from each other, but it evolves quickly into stable forms.
Modules
- lsp-config
- null-ls
Emacs + Org-mode (exports)
- Long, slow editing
- The timeless classic system.
- Org-mode format (structured text) for everything.
Pandoc
- Import/export/conversion between declarative formats.
cabal install pandoc
Haskell
An implementation of a system of logic.
Ocaml
Way better than Python general purpose language based on the right principles.
Scala 3
Everything done right by the giga chad Odersky.
Erlang
A masterpiece of software engineering. I wish I could.
Rust
Just like the Simple-typed lambda calculus restricts the original formalism, so
does Rust
(enforces at most one mutable reference at compile time).
This is the principal innovation (for crappy imperative languages) and it should be used.
Coq
- Formal verification
- https://softwarefoundations.cis.upenn.edu/lf-current/
opam install coq
Agda
- A better language for formal specification
- https://plfa.github.io/
cabal install Agda
(agda-stdlib
to be installed separately)