Compose Conference
Compose Conference
  • Видео 91
  • Просмотров 280 816
George Wilson - An Intuition for Propagators - Compose Melbourne 2019
An Intuition for Propagators
The propagator model of computation developed by Radul and Sussman consists of stateful cells connected by independent stateless machines called propagators. These propagator networks are a helpful way to structure or think about computations, particularly those that are concurrent or distributed.
This talk will give an intuition for what these propagator networks look like, why they work, and how we can use them to build programs. Efficient implementation will not be covered.
The Haskell community has recently seen concurrency abstractions bearing similarities to propagators, such as the work on LVars by Kuper and Newton; and also projects directly influenced ...
Просмотров: 6 719

Видео

Jack Kelly - Reflex Outside the Browser - Compose Melbourne 2019
Просмотров 1,4 тыс.5 лет назад
Reflex Outside the Browser Functional Reactive Programming (FRP) is often introduced by discussing events and behaviors, and how to transform and mix them. But once you understand the primitives, what do you do with them? Where do the first events come from, and how do you wire these parts into a larger whole? FRP promises benefits in more domains than just user interfaces, so let's take a look...
Brendan Zabarauskas - Lost in a Universe of Types - Compose Melbourne 2019
Просмотров 1,1 тыс.5 лет назад
Lost in a Universe of Types: My Adventures in Programming Languages Programming language design is kind of like world building. This is what initially got me excited about it! In this talk I'll take you on journey, showing how I originally became excited about programming languages as a result of my artistic interests. I'll then cover why we are excited about programming languages and dependent...
Svetlana Marina - Day-to-Day Property Based Testing in Scala - Compose Melbourne 2019
Просмотров 4115 лет назад
Day-to-Day Property Based Testing in Scala Property-based testing is a popular testing concept, which came from the world of Functional Programming. QuickCheck in Haskell is an iconic framework, which introduced us to this idea. Today we can find testing libraries supporting PBT in any main-stream languages, including Scala, JavaScript, Ruby, Python, Java, etc. We all like the idea of building ...
Ambrose Bonnaire Sergeant - The Hidden Data Flow in Types - Compose Melbourne 2019
Просмотров 1,7 тыс.5 лет назад
The Hidden Data Flow in Types On the surface, function types simply describe inputs and outputs-indeed, that's how they're used in most type systems. But there's more to function types! Fascinatingly, a function type can be transformed into a data flow graph that predicts the inner workings of any function that has that type. Using this graph, intricate dependencies between function inputs and ...
Dave Yarwood - A music composition language with a functional backbone - Compose Melbourne 2018
Просмотров 6 тыс.6 лет назад
Dave Yarwood - A music composition language with a functional backbone - Compose Melbourne 2018
Elias Jordan - Life Is A Comonad - Compose Melbourne 2018
Просмотров 3 тыс.6 лет назад
Elias Jordan - Life Is A Comonad - Compose Melbourne 2018
David Barri - Quantifiers in Programming - Compose Melbourne 2018
Просмотров 8806 лет назад
David Barri - Quantifiers in Programming - Compose Melbourne 2018
Andrew McCluskey - Appetite for dysfunction - Compose Melbourne 2018
Просмотров 2756 лет назад
Andrew McCluskey - Appetite for dysfunction - Compose Melbourne 2018
Kevin Yank - Elm at Scale: Surprises and Pain Points - Compose Conference 2018
Просмотров 1,3 тыс.6 лет назад
Kevin Yank - Elm at Scale: Surprises and Pain Points - Compose Conference 2018
Laws! - George Wilson - Compose Melbourne 2018
Просмотров 1,8 тыс.6 лет назад
Laws! - George Wilson - Compose Melbourne 2018
Tim McGilchrist - Dependently Typed State Machines - Compose Melbourne 2018
Просмотров 1,2 тыс.6 лет назад
Tim McGilchrist - Dependently Typed State Machines - Compose Melbourne 2018
Rohit Grover - Prototype Driven Development using Haskell - Compose Melbourne 2018
Просмотров 6196 лет назад
Rohit Grover - Prototype Driven Development using Haskell - Compose Melbourne 2018
Dr. Paul Bone - AST to WebAssembly: Writing a code generator - Compose Melbourne 2018
Просмотров 6206 лет назад
Dr. Paul Bone - AST to WebAssembly: Writing a code generator - Compose Melbourne 2018
Jo Cranford - Drinking the Elixir - Compose Melbourne 2018
Просмотров 2646 лет назад
Jo Cranford - Drinking the Elixir - Compose Melbourne 2018
Sean Chalmers - Reflexive Art - Compose Melbourne 2018
Просмотров 3676 лет назад
Sean Chalmers - Reflexive Art - Compose Melbourne 2018
Julie Moronuki - Keynote - The Unreasonable Effectiveness of Metaphor - Compose Melbourne 2018
Просмотров 2,4 тыс.6 лет назад
Julie Moronuki - Keynote - The Unreasonable Effectiveness of Metaphor - Compose Melbourne 2018
Teaching Haskell
Просмотров 7677 лет назад
Teaching Haskell
Implementing an Event Driven Microservices Architecture in F#
Просмотров 6 тыс.7 лет назад
Implementing an Event Driven Microservices Architecture in F#
Compose :: Melbourne 2017 - Huw Campbell - Grenade - Dependently Typed Neural Networks in Haskell
Просмотров 1,7 тыс.7 лет назад
Compose :: Melbourne 2017 - Huw Campbell - Grenade - Dependently Typed Neural Networks in Haskell
Compose :: Melbourne 2017 - Jurriaan Hage - Domain-Specific Type Error Diagnosis in GHC
Просмотров 3147 лет назад
Compose :: Melbourne 2017 - Jurriaan Hage - Domain-Specific Type Error Diagnosis in GHC
Compose :: Melbourne 2017 - Luke Stephenson - Reactive Streams for REA feeders
Просмотров 1837 лет назад
Compose :: Melbourne 2017 - Luke Stephenson - Reactive Streams for REA feeders
Compose :: Melbourne 2017 - Keira Hodgkison - The Why and How of ReasonML
Просмотров 2 тыс.7 лет назад
Compose :: Melbourne 2017 - Keira Hodgkison - The Why and How of ReasonML
Compose :: Melbourne 2017 - Ronen Narkis - Re-ops, a Functional Live-Infrastructure as Code
Просмотров 6557 лет назад
Compose :: Melbourne 2017 - Ronen Narkis - Re-ops, a Functional Live-Infrastructure as Code
Compose :: Melbourne 2017 - Tony Morris - FP in Aviation
Просмотров 8447 лет назад
Compose :: Melbourne 2017 - Tony Morris - FP in Aviation
Compose :: Melbourne 2017 - Justin Bedő - BioShake: A Haskell EDSL for Bio-Informatics Pipelines
Просмотров 4307 лет назад
Compose :: Melbourne 2017 - Justin Bedő - BioShake: A Haskell EDSL for Bio-Informatics Pipelines
Compose :: Melbourne 2017 - George Wilson - Type Class: The Ultimate Ad Hoc
Просмотров 5 тыс.7 лет назад
Compose :: Melbourne 2017 - George Wilson - Type Class: The Ultimate Ad Hoc
Compose :: Melbourne 2017 - Pei Shi Yong - React: JS vs ClojureScript
Просмотров 3157 лет назад
Compose :: Melbourne 2017 - Pei Shi Yong - React: JS vs ClojureScript
Distrest: REST access to distributed services
Просмотров 2617 лет назад
Distrest: REST access to distributed services
Working with Monads in OCaml
Просмотров 4,5 тыс.7 лет назад
Working with Monads in OCaml

Комментарии

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

    I started learning programming in the imperative style with Python and Javascript. After learning Rust and then recently basic Haskell, my mind was opened to how functions are all you need (according to lambda calculus). But what I also took from Rust and Haskell is that algebraic data types are all you need: just like using "and" and "or" allows you to state so many combinations of phrases in English, product and sum types cover so much of the spectrum. But functions are like implications in English: "if I have A then I have B". They're like pseudo-values where they will have a definite value but only when applied with the required argument. That allows you to work backwards by parameterizing the multiple variants (aka "or" sums) in your output type according to various "or" sum variants in the input domain. So defunctionalization is expressing the sum variation as values rather than function pseudo-values. And that means you can serialize them for storage and transfer compared to true functions. It probably also is important for designing compatibility layers because a C function and Ruby function may not be the same but if they can be serialized to equivalent sum types, then they should be compatible.

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

    10:00 This all makes me think about tensors and the ability to talk about covariance and contravariance at the same time explicitly: for example, a vector is a (1,0)-tensor, a covector/linear form is a (0,1)-tensor, a linear vector space map is a (1,1)-tensor, etc. It seems that (co-)functors are either fully covariant or contravariant but never mixed. What would be a category theory / type theory / functional programming equivalent of a mixed tensor which could have some number of covariant and contravariant pieces? Edit: It seems he explained something like a (1,1)-tensor from abstract algebra as a Profunctor in that it takes 1 contravariant input type and gives 1 covariant output type. But I'm wondering about the terminology that generalizes (p,q) tensors so that you could talk about something that takes 42 contra- input types and gives 314 covariant output types.

  • @tomchengxiang
    @tomchengxiang 2 месяца назад

    Really a good idea, wonder few people watch

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

    I have enjoyed going back to look at some of these concepts. Thank you for your presentation. Being a low vision individual, SEEING what you are speaking of is almost impossible unless it is on a black or dark blue background. Fortunately, you were very clear in speaking about what appeared on the screen. Thank you. Please consider us "low vision folk" in the future? <3 💘

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

      * For context, I peruse these videos on my lunch breaks. 🙂 ;-)

  • @Lircking
    @Lircking 7 месяцев назад

    nice

  • @Lircking
    @Lircking 7 месяцев назад

    amazing

  • @GuyDude-hk8uy
    @GuyDude-hk8uy 9 месяцев назад

    Don't quote me on this, but regarding the "open vs. closed" tradeoff, I think the issue relates closely to the expression problem - therefore, we could use a solution to that in order to recover the openness. Again, don't quote me, but I think this could be achieved (in Haskell, at least) using a typeclass with an associated data type. That way you can create instances of the class "SerializableFn" where you must provide a Data type for each instance and a mapping function to/from said data type cases to the appropriate function/s relevant to that instance. That way - whilst you still need to update the code to handle the new case of course - any old code that just uses the typeclass will have the changes propagated automatically; the same way the definition of (+) itself doesn't need to be modified for each new instance of Num a. Not sure whether this would be able to work out with the kinds, or regarding (multiple) type variables, but it seems somewhat promising. I have a feeling the Haskell MemoTrie library and associated paper "Memo Functions, Polytypically!" may bear some relation.

  • @dooZyz
    @dooZyz 11 месяцев назад

    Great speaker and great talk!

  • @kahnfatman
    @kahnfatman Год назад

    Is Maybe a special case of Either Nothing?

  • @mathandemotion
    @mathandemotion Год назад

    For everyone who is suffering because of the audio: Easyeffects with noise reduction and autogain makes it sound pretty ok :)

  • @dengan699
    @dengan699 Год назад

    wow good talk!

  • @a0um
    @a0um Год назад

    Please, ask some help from an audio technician!

  • @dustin20541
    @dustin20541 Год назад

    Great video. Please keep making more of them George.

  • @vpryt18
    @vpryt18 2 года назад

    Donya? or Sonya? Is that a typo too?

  • @djgreyjoy1495
    @djgreyjoy1495 2 года назад

    I finally understood monads. Thanks Dr Riehl!

  • @lucasa8710
    @lucasa8710 2 года назад

    good

  • @asitisj
    @asitisj 2 года назад

    Nat <: nat , so how influenced is this from Russell's type theory? Also you can't derive subsumption rule when row type instantiated Jury is still out on, if 0 is nat

  • @pushinweight
    @pushinweight 2 года назад

    KDA will be legendary.. amazing technology

  • @Voltra_
    @Voltra_ 2 года назад

    9:04 you can in C++ :3

    • @Evan490BC
      @Evan490BC 2 года назад

      Yes, using SFINAE, but it is a low-level hack, as C++ doesn't really have formal interfaces.

  • @sohangchopra6478
    @sohangchopra6478 2 года назад

    Ptghci is also quite good for a terminal REPL

  • @TheRealSTR
    @TheRealSTR 2 года назад

    Here we go boys

  • @craia25
    @craia25 2 года назад

    this is a crazy way to produce music.... i am wondering how this sounds? ;-)

  • @jsmdnq
    @jsmdnq 2 года назад

    Can this analyze the program Ken Griffin uses to manipulate the fraud market?

  • @asandax6
    @asandax6 2 года назад

    "Lock-step simulation is child's play" Me: This must be the reason I can't do it because I'm not a child anymore 😥

  • @dinoscheidt
    @dinoscheidt 2 года назад

    Even in 2022 great talk. Well done

  • @English1108
    @English1108 2 года назад

    I just want to say this technique is obnoxious. Pretty much the whole point of the this technique would be to apply it to the task of iteratively walking through a tree structure and accumulating a value from it. When this gets brought up on the internet, its always (like this video) walking through a tree structure and NOT accumulating a value or, like other articles, accumulating a value from a sequence structure (like summing a list). Table stakes for this technique to be useful is walking a tree AND accumulating a value - but once you do that, the method shown here just doesn't work - why? because you have 2 different conceptual stacks to maintain (one to maintain position in the tree and one to accumulate the value) and the inlining no longer works the same way and there is just nothing out there that bridges the gap.

    • @1210divs
      @1210divs 2 года назад

      Correct! Talk is kind of misleading. The reason why the tree traversal function prints the traversal path instead of returning it as a list is because it CAN'T accumulate the path and return it.

    • @williamd4866
      @williamd4866 2 года назад

      ​@@1210divs That's not true! As TJ above mentions, you can accumulate a value like a list through a tree using this technique. The things you end up accumulating together are just represented by functions arguments for the continuation.

    • @1210divs
      @1210divs 2 года назад

      @@williamd4866 I will believe you if you show me a version of the code from this video that returns the output as a sequence rather than printing it.

    • @williamd4866
      @williamd4866 2 года назад

      @@1210divs Something like this would accumulate a list in CPS: List listTree(Tree tree, Function kont) { if (tree != null) { return listTree(tree.left, (L) -> { return listTree(tree.right, (R) -> { return kont(L + [tree.content] + R); }); }); } else { return kont(List()); } }

    • @1210divs
      @1210divs 2 года назад

      @@williamd4866 at this point, you are no longer using the continuation and doing plain old recursion that will lead to stackoverflow.

  • @dean2951
    @dean2951 2 года назад

    12:41 프로세스

  • @michaelmroz7433
    @michaelmroz7433 2 года назад

    I watched this talk for the first time around when it was delivered, when I was first properly getting into FP. Even given that, I've watched it at least three times in the past three months. It's just so fun.

  • @spiraeth
    @spiraeth 2 года назад

    Bret Victor reference detected.

  • @chickengoatfish
    @chickengoatfish 2 года назад

    \m/..\m/

  • @juliannevillecorrea
    @juliannevillecorrea 2 года назад

    thank you sir ❤️

  • @parietal100
    @parietal100 3 года назад

    Wonderful presentation. Thank you.

  • @kaqqao
    @kaqqao 3 года назад

    Excellent talk. Terrible audio. But excellent talk.

  • @marissa3248
    @marissa3248 3 года назад

    22:11 live coding begins

  • @MohammedAli-go2uc
    @MohammedAli-go2uc 3 года назад

    Kadena ✅🔥

  • @WarrenLeggatt
    @WarrenLeggatt 3 года назад

    Great talk and props for the King Chrimson shirt :)

  • @linhe6729
    @linhe6729 3 года назад

    Great talk even in 2021!

  • @s90210h
    @s90210h 3 года назад

    'I have to get back to Science...' <3 the music was cool af tho the code could watch out for timing 'errors' in the human's playing too perhaps to derive micro timings?

  • @JosiahWarren
    @JosiahWarren 3 года назад

    We need more of them

  • @АнимусАнанимус
    @АнимусАнанимус 3 года назад

    23:52 Lmao, George Wilson is there! 😂

  • @k1m1
    @k1m1 3 года назад

    You are amazing!

  • @StudentOfKyoto
    @StudentOfKyoto 3 года назад

    Amazing talk

  • @andrewsorenson6750
    @andrewsorenson6750 3 года назад

    Great name!

  • @slowpnir
    @slowpnir 3 года назад

    What font does he use?

  • @droidcrackye5238
    @droidcrackye5238 3 года назад

    great work

  • @Bratjuuc
    @Bratjuuc 3 года назад

    i'm really glad I stumbled upon this talk. Thanks

  • @hotpaws_maths_and_science
    @hotpaws_maths_and_science 3 года назад

    i like how he says DO DO

  • @i6g7f
    @i6g7f 3 года назад

    Thank You for this wonderful talk! Very helpful! :) that explain of map and fmap at 1:20 is very very comprehnsible, cool!

  • @jdubbs9655
    @jdubbs9655 3 года назад

    I am very intrigued. I would like to learn more!

  • @AshkanKiani
    @AshkanKiani 3 года назад

    The person dying of consumption in the audience with their phlegmy coughs is really distracting, but the talk is fantastic.

    • @reen6904
      @reen6904 3 года назад

      lol, tere's a guy with tuberculosis in every meeting