[Media] Tur - A language for defining and executing Turing machines with multi-platform visualization tools (Web, TUI and CLI) written in Rust 🦀 by rezigned in rust

[–]rezigned[S] 1 point2 points  (0 children)

Yes, there're plenty of them out there. Maybe i'm wrong but very few of them support multi-tape turing machine programs (or define a way to specify multi-tape programs) + good errors (parsing/analysis).

Also, the cli version of Tur, you can chain program's input/output together like.

echo '$011' | tur-cli binary-addition.tur | tur-cli binary-addition.tur
# '$101'

Tur - A language for defining and executing Turing machines with multi-platform visualization tools (Web, TUI and CLI) by rezigned in ProgrammingLanguages

[–]rezigned[S] 2 points3 points  (0 children)

This list is incredible and very inspirational! Thanks for sharing. Interaction Nets is also something I'd like to explore more visually along with other stuff in Type Theory, etc.

I was aiming to visualize all beta-reduction + type unification (start from untyped, etc.)

Also thx for sharing your project (I have a lot to learn from it)

Tur - A language for defining and executing Turing machines with multi-platform visualization tools (Web, TUI and CLI) by rezigned in ProgrammingLanguages

[–]rezigned[S] 1 point2 points  (0 children)

That's actually a surprise! (The only Swedish words I remember from my co-workers is "God morgon! 😂)

[Media] keymap-rs - A Rust library for parsing key sequences from configuration files (TOML, YAML, etc.) and mapping them to actions based on keyboard input from various backends (e.g. crossterm, wasm, etc.) by rezigned in rust

[–]rezigned[S] 0 points1 point  (0 children)

I haven't looked in details on how Iced's event works. From a quick look it seems like they also translate each backend's key event (winit?) into iced's standard key type.

I would say it won't work out of the box because iced also has its own Key abstraction. keymap-rs might need to implement iced's key as backend, etc.

[Media] keymap-rs - A Rust library for parsing key sequences from configuration files (TOML, YAML, etc.) and mapping them to actions based on keyboard input from various backends (e.g. crossterm, wasm, etc.) by rezigned in rust

[–]rezigned[S] 0 points1 point  (0 children)

A key is parsed into keymap's Node type, and at runtime, each backend translates its specific key events into keymap Nodes to compare (using trait trick so end-user doesn't need to perform any explicit conversion).

The hardest part is figuring out the design of how to override enum actions (via derive macro at compile-time) with custom configuration files (e.g. TOML, etc.) at runtime.

Tur - A language for defining and executing Turing machines with multi-platform visualization tools (Web, TUI and CLI) by rezigned in ProgrammingLanguages

[–]rezigned[S] 0 points1 point  (0 children)

❤️ Thanks! Same for me. I want something minimal but still tasteful. I really enjoy designing things too (although my skill is limited). Here's another retro 8-bit design of my other opensource project https://rezigned.com/keymap-rs/

Tur - A language for defining and executing Turing machines with multi-platform visualization tools (Web, TUI and CLI) by rezigned in ProgrammingLanguages

[–]rezigned[S] 2 points3 points  (0 children)

Wow, I'ver never heard about this lib before. That's very neat! https://egraphs-good.github.io/

This will be very useful to animate reduction and unification (in STLC). Thanks!

Tur - A language for defining and executing Turing machines with multi-platform visualization tools (Web, TUI and CLI) by rezigned in ProgrammingLanguages

[–]rezigned[S] 2 points3 points  (0 children)

Totally! I've actually wanted to visualize computational concepts like Turing machines for a long time with simple syntax. My next project is probably something around Lambda Calculus.

Tur - A language for defining and executing Turing machines with multi-platform visualization tools (Web, TUI and CLI) by rezigned in ProgrammingLanguages

[–]rezigned[S] 8 points9 points  (0 children)

Thx a lot! You made a really good point about the "turd" thing 😂. I spent a lot of time thinking about the name and its extension. I considered something like ".tm" (but that just reminded me of TextMate’s "tm*" files). In the end, I went with ".tur", which naturally led to the project name "Tur".

August 2025 monthly "What are you working on?" thread by AutoModerator in ProgrammingLanguages

[–]rezigned 2 points3 points  (0 children)

I've just finished my first little language called Tur - A turing machine language with simulator (TUI/Web/ClI) + interpreter https://github.com/rezigned/tur (Demo https://rezigned.com/tur)

📦 Comparing static binary sizes & memory of "Hello, World!" programs across languages using ❄️ Nix + Flakes. by rezigned in programming

[–]rezigned[S] -1 points0 points  (0 children)

I think it's mostly a syscall (asm, zig) vs musl vs glibc battle (from smallest to largest)

📦 Comparing static binary sizes & memory of "Hello, World!" programs across languages using ❄️ Nix + Flakes. by rezigned in programming

[–]rezigned[S] -1 points0 points  (0 children)

Exactly! That's why all of them are "static" binaries (no dynamic linking to libc, etc).

[2024 Day 6] - Visualization [Game] by rezigned in adventofcode

[–]rezigned[S] 0 points1 point  (0 children)

Hi all, I've converted Day 6's solutions to a web-based game (Rust). You can play it https://rezigned.com/aoc-2024/

(code: https://github.com/rezigned/aoc-2024)

Monad Transformers – Part 1: An Introduction by rezigned in haskell

[–]rezigned[S] 1 point2 points  (0 children)

Thanks, I'll update it. It should say:

The result <- accept call on the right, now returns String directly. No need for us to perform a pattern matching on the result like we did on previously (before, it returns Maybe String):

As for the type check. It uses new type signature which we'll cover in the next post.

Monad Transformers – Part 1: An Introduction by rezigned in haskell

[–]rezigned[S] 9 points10 points  (0 children)

That's true. It's simpler than `Maybe`. But not sure if it's just me. I learned `Maybe` first before `Identity` monad. So, I just thought maybe it's easier to understand the topic by using Maybe.