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...
  • НаукаНаука

Комментарии • 5

  • @kalsenksangma
    @kalsenksangma 2 месяца назад +1

    Wow nice video full support like ❤👍🙏

  • @nanman_chief
    @nanman_chief 26 дней назад

    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.

  • @wowzers1237____
    @wowzers1237____ Месяц назад

    Honestly, why not just use Prolog at this point?

  • @themcchuck8400
    @themcchuck8400 3 месяца назад +3

    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.

    • @palanijohnson1651
      @palanijohnson1651 3 месяца назад +4

      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.