anyone interested in types and/or macros who hasn'...
# thinking-together
g
anyone interested in types and/or macros who hasn't seen this talk is in for a treat

https://youtu.be/5QQdI3P7MdY

👍 2
one of a small number of talks where the questions section is also interesting
f
Taking that combination in a slightly different direction, there's http://www.iro.umontreal.ca/~monnier/typer-jfla2019.pdf
1
d
This looks really exciting - can’t wait to listen. I’m still waffling on static vs dynamic types, but Lisp does seem to be the True Way for syntax (that is, virtually no syntax!)
y
@Daniel Hines “No syntax” is never quite accurate. But if you’re still looking for “no syntax” see also https://www.reddit.com/r/nosyntax/ 🙂
d
Lamdu looks super interesting. But is it a language or an editor or both?
🙂 1
y
It’s both. The language we envision (haven’t yet implemented all the features) is pretty similar to Haskell, as we believe that the distinction between computations and effects is important for live programming. However Haskell is not a total fit for what we want, on which we expand more here: https://medium.com/lamdu-blog/designing-programming-languages-with-ides-in-mind-de890989dfa
d
@yairchu Both Hackett and Lamdu are really awesome. Thanks for pushing the bounderies here! Lambdu looks like it addresses many of my complaints about the static type family. I'm curious, in this digits function. How do you read the recursive call to digits? To me, it looks like it should be digits num // base num
👍 1
y
You mean how I would read it out loud? Tbh I don’t have familiarity with reading code out loud in any language, but I guess it can be “digits (of) num (with) base 10”?
d
@yairchu, you mean, I'm confused about the syntax, I don't understand what I'm seeing as the recursive params to digits here

https://youtu.be/viF1bVTOO6k

y
@Drewverlee Yeah I guess the syntax does warrant some explanation digits num num // base ⇒ base Is equivalent to Python style
digits(num=num//base, base=base)
. The
⇒ a b c
syntax is sugar for
a=a, b=b, c=c
similar to JS “Enhanced object literals” i.e
{a=1, b}
, aka Rust’s “Field init shorthand” or Haskell’s “Field puns”.
d
But the arrow is in the middle, not at the start
Oh, I see
It's per argument
@yairchu what platform does it run on? Can you use this with haskell libs for example?
y
@Drewverlee It currently translates to JS and runs via node, but at some point we’ll create a proper compiler, probably based on LLVM