Lambda Days Keynote - Beyond functional programming: a taste of Verse

This advanced keynote from Lambda Days 2023 takes a deep dive into what it looks like to program in Verse and gives you a sense of what functional logic programming is about. With Simon Peyton Jones and Tim Sweeney.

3 Likes

@Tim_Sweeney great presentation. I have a few question regarding some language bits that were part of this talk.

  • Are the following things already part of the Verse shipped with UEFN?

    • for (...) do: the do part is new to me
    • x: int where:: trailing where cause on existential
    • other effects such as reads, writes etc.
    • Application - f(x), as[I]: What does this part mean in the slides?
    • a | b: I believe “choice” it was.
    • <Markup>: What is the markup meant for?
    • Lambdas x: int => x + 1: how is that different to (a -> b) syntax and can we construct a closure value in today’s verse already?
    • conditional access modifiers x: int <public if (e = 0)>
    • then and else branches for single expressions without brackets or significant indentation
    • failure context within if without () - e.g. <public if known[x]>
    • union
    • what does the [2] mean at Node: [2]tree(t); also is t an associated value in this context?
  • Are choices asynchronous in some way? How does a function that returns an int behave when it uses some choices within its body?

  • Was it intentional that the presentation slides did not consistently used the guidelines for naming schemes such as making only types lower cased but everything else upper cased. It made it harder to follow if the code snippets actually performed a cast of a value or if it was some kind of array access (e.g. for (x := xs[i]) by the guidelines xs should be a type not a value such as an array).

I’ve used it as

for:
    statement
    statement
do:
    statement
2 Likes