Verse: A New Functional Logic Language • Lennart Augustsson • GOTO 2023
HTML-код
- Опубликовано: 2 авг 2024
- This presentation was recorded at GOTO Copenhagen 2023. #GOTOcon #GOTOcph
gotocph.com
Lennart Augustsson - Principal Programmer at Epic Games
RESOURCES
/ augustsson
/ augustss
github.com/augustss
ABSTRACT
Verse is a new programming language, being designed at Epic Games as the language of the metaverse. Verse is a functional logic language, with a bunch of innovative ideas. Like Haskell, Verse is declarative (a variable in Verse stands for just one, immutable value), and higher order (lambdas are first class). But Verse goes well beyond Haskell, with existential variables, unification, expressions that yield multiple values, and much more besides.
In this talk we'll give you a sense of what functional logic programming is about, what it looks like to program in Verse, and how we can give meaning to Verse programs using rewrite rules. [...]
TIMECODES
00:00 Intro
04:10 Verse: a language for the metaverse
05:47 Do we really need a new language?
07:48 Where are we?
09:23 View from 100,000 feet
11:39 A taste of Verse
12:26 Bindings
13:45 Functions & lambda
14:47 Conditionals & recursion
15:09 Choice
16:04 Binding & choices
17:19 Nested choices
19:02 Nested choices & funky order
20:55 Conditionals
21:51 Comparisons
24:14 Conjunction & disjunction
25:13 Equality
26:16 From choice to tuples
27:04 Order is important
27:21 From tuples to choice
28:18 Generalising for
30:15 Indexing arrays as[i]
31:19 Narrowing
32:27 Function calls & failure
33:33 Separating "bring into scope" from "give value"
35:09 Towards functional logic programming
36:10 Outro
Download slides and read the full abstract here:
gotocph.com/2023/sessions/2896
RECOMMENDED BOOKS
Greg Keast • Verse Code Examples • amzn.to/4aQsfsG
Uberto Barbini • From Objects to Functions • amzn.to/4cMDOmH
Rebecca Skinner • Effective Haskell • amzn.to/3SxTpwY
Vitaly Bragilevsky • Haskell in Depth • amzn.to/3EXpmbe
Venkat Subramaniam • Functional Programming in Java • amzn.to/3bzFNNQ
Clinton L. Jeffery • Build your own Programming Language • amzn.to/3vUeDxJ
/ gotocon
/ goto-
/ goto_con
/ gotoconferences
#Verse #Verselang #VerseLanguage #EpicGames #Metaverse #FunctionalProgramming #Programming #Haskell #FunctionalLogicLanguage #Immutability #Lambda #UnrealEngine #LennartAugustsson
Looking for a unique learning experience?
Attend the next GOTO conference near you! Get your ticket at gotopia.tech
Sign up for updates and specials at gotopia.tech/newsletter
SUBSCRIBE TO OUR CHANNEL - new videos posted almost daily.
ruclips.net/user/GotoConf...
Video Credit
Unreal Engine: • The Matrix Awakens: An... Наука
Wow nice video full support like ❤👍🙏
It's cool that this language has a primitive for non-deterministic computation, as well as something similar to monad comprehensions. However, using non-deterministic computation and monadic programming is something I'm not very familiar with. Regarding computational effects/control operators, I am more familiar with those delimited continuations in Scheme dialects, which are very intuitive to me. I know that multi-shot continuations can be used to implement non-deterministic computation, but I'm not sure if this can be thought of in reverse. If there is a way to think of both correspondingly, then Verse would feel more familiar to me.
Honestly, why not just use Prolog at this point?
This talk was not well done. Several essential language features were unclear or explanations were contradictory. Are for loops iterators, generators, or some weird other thing? Is (1 | 3) a tuple generator, iterator, or some weird other thing?
Verse does not appear to be appropriate for beginning programmers. If you want a programming language that embraces fail states, use Unicon instead.
The explanations are quite clear actually. They spent a decent chunk of the talk explaining what choice is and how it works. If you want to look into it more the idea comes from logic programming, where you specify program constraints the engine/runtime/language solves those constraints. In many ways this is higher level than a tuple generator or iterator. You can model iterators/generators with these logic constructs but they can be used to model many other things too.
Being "appropriate for beginning programmers" is entirely arbitrary. A talk explaining the unique features of a language will tend to focus on the parts of the language that might be difficult for a beginner to grasp. For example, if I'm teaching a student Javascript I'm not going to immediately introduce them to object prototypes, even though those are one of the fundamental building blocks of the language.