Hacker News new | past | comments | ask | show | jobs | submit login
Expresso: A simple expressions language with polymorphic extensible row types (github.com/willtim)
61 points by wtetzner on June 12, 2020 | hide | past | favorite | 21 comments



This is amazing! What I really want on top of this language is the ability to take protobuf or cap'n'proto definitions and be able to use them seamlessly in this language, and then spin up AWS lambda or GCP functions that use this language + proto service definitions to communicate with the outside world.


I get that the name references “expressions”, but the coffee cup and the misspelling of “espresso” really bothers my inner pedant. :)


It's also already the name of a popular tool for designing regular expressions[0] (and may be infringing on their trademark)

[0]: http://www.ultrapico.com/Expresso.htm


I would think the domains are different enough that trademark infringement shouldn't be a concern.


Maybe, but I think they both belong in trademark class 9 (Electrical and scientific apparatus). Ultimately a court of law would have to decide. But why even take the change?


I wish there were more statically typed embeddable languages that weren’t functional. I mostly make tools for developers and that audience doesn’t especially find the functional syntax or paradigm to be very helpful.


Well-designed type systems tend to show up in functional languages for good reason, especially if we restrict ourselves to small languages. It's much easier to make coherent typing rules in languages with clean semantics.


It's my guess that a rich static type system would be harder to implement for a non-functional language, due to mutability and such. Though there could also just be cultural overlap between the people who want to write a small statically-typed language and the people who like the functional paradigm


> It's my guess that a rich static type system would be harder to implement for a non-functional language, due to mutability and such.

Only if you represent (im)mutability in the type system, and I would argue that you shouldn't for an embedded scripting language. We don't want to constrain every aspect of the program to the type system; we just want some quick assurance that the shapes snap together properly.

> Though there could also just be cultural overlap between the people who want to write a small statically-typed language and the people who like the functional paradigm

No doubt.


Developers don't find functional languages helpful? Do you somehow believe that only Java programmers are called developers or what am I missing here?


> what am I missing here?

Java isn't the only non-functional language and by virtually every measure, functional languages rank lower than other language paradigms on just about every index (e.g., TIOBE doesn't have a single functional language in their top 20). If I had to guess, people find the spartan syntax hard to read and gratuitously unfamiliar, especially considering there are many highly-ranked languages which borrow functional concepts but retain the more structured (and probably more human-readable) syntax.


I mean, Scala is functional, pretty popular, and has a familiar syntax. Also ReasonML, if that counts.


> functional languages rank lower than other language paradigms on just about every index

Because what is popular isn't what is best.

> but retain the more structured (and probably more human-readable) syntax

There is nothing more structured or readable about C-like syntax.


My target audience is developers generally, not functional programmers specifically, and developers disagree with your assessment. Sorry.


Maybe they meant "the particular developers that [they] make tools for"


Doesn't seem like it.


People that prefer functional languages seem to be the only ones that care enough to put in the time to build them.


Are there any good starting places for learning the necessary type theory to understand this stuff? I really like the idea of extensible row types, but struggle with trying to understand the research papers.


Types and Programming Languages by Pierce. Available online if you search for it. Expresso appears to be, more or less, an extension of the toy language implemented in that book.


Lovely. Great work! I’ve been waiting for a language with ergonomic records using row-types.


Cool! This is perfect as a little scripting language for Haskell.




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: