Python implementation for Understanding Computation.
Understanding Computation is an awesome book about computation theory, which explains profound and complicated concepts by using short and concise Ruby code snippets.
I don't want to evangelize, but if you are curious about how a program functions, you must read this book. It's just like SICP's ruby version in a way, yet with much more fun.
I just implemented equivalent codes from chapter to chapter, those contents are:
-
Two kinds of interpreters for a simple language with a parser based on lark
-
Generating Python code for this language instead of Ruby (Because Python's anonymous functions are quite more limited than Ruby, there are some hacks like Y-combinator)
-
Simulating automata such as DFA, NFA, PDA
-
Using automata to build a simple regular expression engine
-
Simulating a Turing machine
-
Lambda calculus and Church numbers
-
Stay tuned..
Python 3.10+