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
: thedo
part is new to mex: int where:
: trailingwhere
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
andelse
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 atNode: [2]tree(t)
; also ist
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 guidelinesxs
should be a type not a value such as an array).
I’ve used it as
for:
statement
statement
do:
statement
2 Likes