A collection of the same projects implemented across multiple languages. Goal: To compare syntax, performance, idioms, tooling, and language ergonomicsโwhile having fun and learning.
I love programming languages and all their nuances. I have long wondered about what each language has to offer in various ways, especially beyond its standard library, package managers, and other bundled features; I was curious about the languages themselves syntactically and linguistically, and how these deliberate choices affected the overall feeling and flow of writing in each one.
I have found that languages are always evolving by building ontop of those that came before; fixing up little things the authors thought were lacking from previous iterations, bundling in the strengths of various languages, and throwing in their own little touch of novelty.
Eventually I want to write more languages than I already have, and this repo will serve as a reference of sorts.
C++
- Lexer โ basic lexer with static input
- Compiler:
g++
- LSP:
clangd
C#
- Lexer โ basic lexer with static input
- Compiler:
dotnet
- LSP:
csharp-ls
Clojure
- Lexer โ basic lexer with static input
- Manager:
leiningen
- Compiler:
lein
- LSP:
clojure-lsp
D
- Lexer โ basic lexer with static input
- Compiler:
dmd
- LSP:
serve_d
Elixir
- Lexer โ basic lexer with static input
- Calculator โ shunting yard RPN parser + calculator
- Manager:
mix
- Compiler:
elixirc
- Runner:
elixir
- Shell:
iex
- LSP:
elixir_ls
Erlang
- Lexer โ basic lexer with static input
- Compiler:
erlc
- Shell:
erl
- LSP:
erlang_ls
Go
- Lexer โ basic lexer with static input
- Runner:
go
- LSP:
gopls
Haskell
- Lexer โ basic lexer with static input
- Compiler:
ghc
- Shell:
ghci
- LSP:
hls
Java
- Lexer โ basic lexer with static input
- Manager:
maven
- Compiler:
mvn
- LSP:
jdtls
Lua
- Lexer โ basic lexer with static input
- Compiler:
luac
- Runner:
lua
- LSP:
lua_ls
Nim
- Lexer โ basic lexer with static input
- Compiler:
nim
- Runner:
nim
- LSP:
nim_langserver
OCaml
- Lexer โ basic lexer with static input
- Compiler:
dune
- Runner:
ocaml
- LSP:
ocamllsp
Odin
- Lexer โ basic lexer with static input
- Compiler:
odin
- Runner:
odin
- LSP:
ols
Python
- Lexer โ basic lexer with static input
- Runner:
python
- LSP:
based_pyright
Rust
- Lexer โ basic lexer with static input
- Compiler:
cargo
- Runner:
cargo
- LSP:
rust-analyzer
- Extra
rust-script
- allows shebang for running single files
Typescript
- Lexer โ basic lexer with static input
- Compiler:
npx tsc
- Runner:
npx tsx
- LSP:
typescript-language-server
Zig
- Lexer โ basic lexer with static input
- Compiler:
zig
- Runner:
zig
- LSP:
zls