Learning a new language can be hard. Developers go to "Hello World" but this is so trivial a program so as to be almost useless.
This project is a collection of tiny programs that may help you learn a language. It is similar to Rosetta Code except that all programs here will be implementations and not library calls.
- Brainfuck: A complete Brainfuck implementation
- Lisp: A tree-walking s-expression interpreter capable of running a fibonacci function
- Potential:
- JQ: A tiny JQ clone
- UUID: A UUIDv4 generator
- HTTP: An HTTP server from UNIX sockets
- RBTree: A red-black tree
A few rules:
- Keep it simple.
- Do not copy any existing code. Write the program from scratch. See rule 1.
- Use existing implementations in this project as guidelines. Use the same or similar algorithms and data structures. See rule 1.
- Avoid programming patterns and object-oriented design and functional programming for the sake of patterns and OOP and FP. See rule 1.
- Avoid unnecessarily complex syntax, even if the complex syntax is more idiomatic in the language. See rule 1.
- Copy program.yaml and implement the
prepareandrunsettings so that your implementation is automatically tested in Github Actions.
Ultimately, Phil is the BDFL and reserves the right to be picky. :)
- Ada
- FreePascal
- FreeBASIC
- R
- Octave
- Common Lisp
- Swift
- Kotlin
- Scala
- Clojure
- Lua
- C++
- D
- Standard ML
- OCaml