Close
0%
0%

Through

From hardware, go Forth, and reach for Categories

Public Chat
Similar projects worth following
0 followers
A programming language, mostly to study operational semantics and concept, in the light of recent mathematics research.

After 10 years of programming various systems and network protocols, I discovered Idris, which in turn had me dive into Category Theory. I couldn't do much with it at the time, and went on with my life.

After 20 years of programming various distributed systems and devops environments for industry, I realized it was not sustainable in the long term. Then interest for hardware and embedded systems started to grow and I realized that Categories can give us a way to compress the tech stack down, and hope to make it sustainable, even in a low-tech society.
Maybe we could even use HoTT from the research labs to make a self-verifying language a reality, or incorporate some AI/ML concepts into the interactive programming environment.

Now how do we go about doing it ? I only have a rough idea at this stage, but I personally can contribute only a tiny part. So don't hesitate to get in touch if you think you can build another piece of the puzzle...



Starting Points:

- Forth for operational semantics close to (RISC) hardware, or something similar (colorForth, ...)

- ASCII, especially the UTF-8 compatible part. because https://utf8everywhere.org/

- LISP/Scheme/Racket for denotational semantics, functional abstraction, etc. or something similar or even stronger (Combinators, Lafont's Interaction combinators, ...)

- Curses, as a proven terminal-based user interface for coding a REPL, an IDE, a chat interface, etc.

Limitations:

- One character (8bit) at a time. No time to waste arguing about syntax, unless it is operationally relevant, ie. it matters for the machine.

- Let suppose we run on a simple 8 bit machine (cf. https://en.wikipedia.org/wiki/Simple-As-Possible_computer)

- Container structure (Poly semantics) for data structures, to be consistent from the beginning.

- functional design for the interactive programming environment. input/output should be a stream, etc.

Lets start there.

Then Growing It:
- Containers and Runners from D. Ahman to structure the language

- Research by Victor Maia, for the insight into simplifying & structuring functional programming at a lower level...

- CatLab to help structuring the code via extensive property testing.

- Unison as an example of "networked operating system" and "live versioning system"

- Erlang/OTP, BEAM and related languages, as a network-first programming environment

View project log

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates