News for hackers. Stuff that matters.
Re:Expresso: A simple expressions language with polymorphic ... by daanx on Saturday November 17, 2018 @04:06PM (#18477402)
Looks like a fun project, very nice :-)

For those interested in more of the beautiful theory on extensible row types, this project seems to be based on an earlier paper I wrote on scoped labels: https://www.microsoft.com/en-us/research/wp-content/uploads/...

Re:Expresso: A simple expressions language with polymorphic ... by jimmyhmiller on Saturday November 17, 2018 @05:48PM (#18477786)
Thanks for the reference. Espresso doesn't support recursive records. Does system in your paper allow for those? Is there anything particularly tricky about supporting them?
Re:Expresso: A simple expressions language with polymorphic ... by willtim on Saturday November 17, 2018 @05:58PM (#18477837)
Hi, author here, yes your paper was a huge inspiration and I really should add a references section in the readme. The row types in Expresso use very simple lacks constraints, similar to the old Hugs TREX system, and don't permit duplicate/scoped labels. I felt this was also a pretty good sweet spot.
Re:Expresso: A simple expressions language with polymorphic ... by daanx on Sunday November 18, 2018 @12:39AM (#18479022)
Thanks :-) TREX (by Mark Jones and Benedict Gaster) is great. The beauty is that a lacks constraints can get translated to fields offsets at runtime making it super efficient!

E.g. a type like:

foo :: r/x => { x :: int | r } -> int

foo r = r.x

Gets translated at runtime to a function where the lacks constraint r/x becomes an actual offset parameter.