Tomo: A statically typed, imperative language that cross-compiles to C [video]

youtube.com

42 points by evakhoury 5 days ago


jll29 - 16 hours ago

It's a very clever aspiration to devise a new language not as something you hope everyone is going to switch to, but, as the OP states more of a test-bed to demonstrate a bunch of nice features, which you hope other people (that implement mainstream languages) will borrow/steal/copy. For instance, I very much appreciate the automatic parsing of command line arguments (and beyond just strings), which I hope the Rust folks will take over one day. Who would not like to skip all the boiler plate writing, but still offer decent cmd line options? For that reason, I will not compare the current Tomo feature set with any other language (as many other commenters do). But I will say that 150 lines for a complete terminal "snakes" game is pretty cool!

It's also smart to facilitate integration with C or other languages that have an abundance of libraries, because it's unlikely that you will create the momentum to rewrite everything in your facorite baby language.

president_zippy - 14 hours ago

Interesting project and all, but why does everybody out to make their own compiled language want to get away from the basic syntax of C so badly? Rust and Golang are the poster children of this, but it seems like every other language implementer feels the same way on matters which are of 99% personal taste and 1% functionality.

This is just one microcosm of the general pattern I'm picking on here, but what's up with this obsession with scoping via indentation like Python? It's true that it looks a little more like a todo list someone would write on a sticky note, but I don't think C syntax is the hard part of systems programming or video game programming, which is what the creator of the Tomo language does.

It just seems like these kind of design choices needlessly add a barrier to entry for people who want to climb aboard.

Then again one must of necessity, have a ferocious "Not Invented Here" streak to go through all the trouble of inventing a new programming language in 2025.

tines - 17 hours ago

I like the effort, but this

> No polymorphism, generics

makes it DOA for me. Also the fact that this is a GC language makes it feel like it's aiming at higher level applications than C.

az09mugen - 3 days ago

TLDW; For those interested in the syntax, here the repo with some examples : https://github.com/bruce-hill/tomo

wavemode - 13 hours ago

One thing I dislike about the syntax of Tomo is that the return type is annotated inside the parentheses. e.g. this function returns Text:

    func greeting(name:Text, add_exclamation:Bool -> Text)
renox - 13 hours ago

It's a minor detail but list starting at 1, with -1 being the last élément and 0 being 'none' is weird.. Why did you make this choice instead of 0 for the first élément, -1 for the last one? It would avoid the 0 'trap'.

taylorallred - 15 hours ago

I like the goals of this language a lot and I've wished something with these goals already existed. But, I'm not sure if this syntax/approach is quite what I want. Really cool project, though!

az09mugen - 3 days ago

Well thought language, I like the concepts.

IshKebab - 16 hours ago

Looks like a neat little language. I didn't see anything especially novel that other languages would want to steal though. The CLI parsing stuff is very similar to Typer, or clap_derive. Arbitrary precision integers are in Python (though I wish more scripting languages would do this too). Zig has great C interop.

I wish it was an embeddable language like Lua though - there are a gazillion languages that are similar to this that you can use for non-embeddable cases... But there are very very few statically typed embeddable scripting languages. The only ones I know of are Gluon, which leans waaaay too far into the obscure functional stuff for a scripting language... and AngelScript which is just a bit too ancient and Javaesque for me.

netbioserror - 17 hours ago

The feature list here has significant overlap with Nim. Maybe we need a website that categorizes languages with feature tags, so we can visualize the overlap!