Scheme Lisp: Feel the Cool - Andy Balaam [ACCU 2018]

Поделиться
HTML-код
  • Опубликовано: 18 сен 2024

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

  • @bluegiger
    @bluegiger 3 года назад +9

    If nothing else, this video helped me to grok Closures in a way no other efforts have managed to. Thank you!

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

      Great to hear!

    • @HarishNarayanan
      @HarishNarayanan 9 месяцев назад

      This is what I came to say. I loved the whole video but this finally got me to see closures with clarity. Thank you!

  • @takagiro-space
    @takagiro-space 5 лет назад +4

    Просто невероятно крутая презентация! Спасибо!

  • @pazdziochowaty
    @pazdziochowaty 5 лет назад +22

    I share your enthusiasm about "Structure and Interpretation of Computer Programs". This is one of my favourite books and I also found it revealing that closures are just enough to create any data structure one can imagine.
    Just my two cents:
    1. I would suggest to make it clear this video is rather addressed to programmers who do not know scheme/lisp or are beginners. I really hoped to see some new things.
    2. I would not call functions which take funcions as arguments meta-programming. They are what mathemeticians call higher-order functions. Meta-programming is rather a program which creates another program - a function which returns function works like that and macros are even better example of meta-programs. I find it sad that C (and in effect C++ which wants to keep compatibility with C) use simple text-based macros instead of what lisp/scheme provides. That is the real meta-programming which enables to define new syntax (DSL).
    Otherwise this is a great video which may get more people into the wonderful world of scheme/lisp. I struggle to understand why languages like haskell were created when there is already the most powerful functional language ever invented

    • @noralworld697
      @noralworld697 4 года назад +3

      People like to invent things. Forget things. Invent things. Forget things. And so on

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

      I would kinda say that at leas in lisp, passing a function to a function IS metaprograming. Since you do not necesarily pass in a function, but rather a list that IS evaluated as a function (A subtle but very powerful diference that lies at the core of what lisp even IS). And as such it pretty much IS meta programing (Calling symbols at runtime is a fundamental manipulation of the code generated when the program runs)

    • @maxbesley1412
      @maxbesley1412 Год назад +1

      I’m coming off of learning Haskell for three months. Now I am starting to learn Lisp (I’m a full member of the FP now).
      I think part of the reason Haskell is useful - and should exist in addition to Lisp - is it’s type system. Haskell’s type system is perhaps it’s central component. Since the type system is so strong, statically typed and the functions are pure, Haskell programs are usually going to be correct if you can get them to compile (unless you made a logic error somewhere).
      Also to my understanding Lisp is not pure. While Haskell certainly is.
      I’d love to master both. As well as the fundamental lambda calculus behind FP.

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

      Extremely relevant re ". I struggle to understand why languages like haskell were created ": ruclips.net/video/_J3x5yvQ8yc/видео.html

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

      Relevant: ruclips.net/video/_J3x5yvQ8yc/видео.html

  • @difflocktwo
    @difflocktwo 3 года назад +8

    such a well done presentation. delivery was spot on.

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

      Glad you enjoyed it

  • @Qazqi
    @Qazqi 6 лет назад +6

    For anyone interested, the extra bits on encoding numbers as functions come directly from Lambda Calculus. Looking up Church encoding will go into more detail.

  • @brightscripters4685
    @brightscripters4685 4 года назад +3

    Thanks for this video!

    • @ACCUConf
      @ACCUConf  4 года назад

      Glad it was helpful!

  • @macosxfiles
    @macosxfiles 5 лет назад +2

    This is very informative. Thank you, Andy!

  • @fastundercoverkitgoogle7381
    @fastundercoverkitgoogle7381 6 лет назад +6

    Excellent!

  • @256k_
    @256k_ Год назад

    fantastic lecture!

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

      Very glad to hear your appreciative comment!

  • @gongfei
    @gongfei 6 лет назад +2

    can't agree more!

  • @wreckgar23
    @wreckgar23 6 лет назад +1

    Very cool!

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

    I've just started learning to program, and I found this video useful. The last example i found a bit impenetrable but i am sure that once i become more familiar with using the language I will eventually figure it out

    • @ACCUConf
      @ACCUConf  Год назад +1

      Glad it was helpful!

  • @cretinobambino
    @cretinobambino 2 года назад +2

    Sum seems more natural to define as
    (define (sum vs)
    (if (null? vs)
    0
    (+ (car vs)
    (sum (cdr vs)))))
    (Apologies if formatting is messed up).

  • @themaxpatel
    @themaxpatel 3 года назад +2

    THIS IS SO COOL!

  • @Show_Cast
    @Show_Cast Год назад +1

    It's 2023 and lisp scheme is going on.

  • @freedom_aint_free
    @freedom_aint_free 2 года назад +1

    I start studying Lisps dialects just because I had an idea of not practical pressing need, just as a academic curiosity: I was using Python to manipulate Regular Expressions (regexs), with really complex rules and processing dozens of thousands of words at a time, and most of the time regular expressions are better than hard code the 'if then else and boolen logic' by hand, by oddly enough sometimes it is not, and I though:
    "If I wrote a program to parse regexs and translate those to code (in this case python) in a metaprogramming style" and in my judgment it can be done in python but feels really clunk and not elegant at all, and after trying some functional languages, of the OCAML family, I though about trying Lisp.

  • @ignaciobianchi9037
    @ignaciobianchi9037 3 года назад +1

    1:15:25 How exactly does mdec decrements the numbers? Also, are the x and y passed in to the mequal? function supposed to be numbers?

    • @ajbalaam
      @ajbalaam 3 года назад +1

      To add one, we "wrap" the function in another function. To subtract one, we call the function, which "unwraps" it again. Yes, x and y are arguments to the mequal? function. Yes, we are representing numbers with functions.

  • @tomwebdisk01
    @tomwebdisk01 4 года назад +1

    Cool Scheme :D

    • @ACCUConf
      @ACCUConf  4 года назад +1

      Thanks for watching!

  • @nathanruben3372
    @nathanruben3372 5 дней назад

    If scheme is the best language out there, why it is a niche language. Why don't we see it anywhere like java, c, c++, python etc..

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

    Is there a scheme book which covers metaprogramming, macros and streams?

    • @ajbalaam
      @ajbalaam 3 года назад +2

      Check out Structure and Interpretation of Computer Programs. There is a full copy available for free online, and you can get it in print.

  • @fabishimwe
    @fabishimwe 2 года назад +2

    Cadddr

  • @jacekjacenty
    @jacekjacenty 5 лет назад +5

    Why everybody who uses Lisp admires the language beauty but does nothing to make the language usable in normal software projects? We are not students. We have no problems with parentheses. But we can't find good documentation where we could start a simple real-life project in Racket. With regards to Common Lisp decent implementations that work on Windows cost lots of money. You build up your enthusiasm for Lisp and you get quickly disappointed when it comes to real life work. Somehow the languages at the top of popularity list have those and other problems solved. Perhaps a good language with a poor environment is a very bad idea?

    • @daver1964
      @daver1964 5 лет назад +4

      I don't understand your complaint, I picked up racket on windows three months ago and am using it, successfully, to not only script my game, but to provide significant functionality to the game itself.
      I've not had to look outside the official documentation that comes with racket to do this.

    • @jacekjacenty
      @jacekjacenty 5 лет назад +1

      @@daver1964 perhaps my mind was damaged by Common Lisp. I miss the interactivity. The way racket documentation explains problems with load does not make sense to me. I can see Racket's potential, but at the same time I have not figured out how to use it properly in the context of my needs.
      Repl was a disappointment.

    • @LambdaJack
      @LambdaJack 4 года назад +2

      Windoze!? BareMetal!

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

      @@LambdaJack you can run scheme on bare metal?

    • @jacekjacenty
      @jacekjacenty 4 месяца назад +1

      I saw my comment five years later. I have invested my time into SBCL Common Lisp. The implementation has improved, and interesting libraries have become available. Now, I know how to solve the problems that caused me trouble years ago.

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

    Lisp is the only truly perfect programming language.

  • @xavierthomas1980
    @xavierthomas1980 6 лет назад +2

    LISP and Scheme are very cool by their simplicity and power, but the parenthesis nightmare gives headache, that's why Lua was invented.

    • @ДмитрийВасильев-я6б
      @ДмитрийВасильев-я6б 5 лет назад

      ))))))))s are nothing but symptom. True illness of Lisp is nesting denoted by them.

    • @pazdziochowaty
      @pazdziochowaty 5 лет назад +10

      Parentheses are handled by editors much better than whitespace which was made syntax in python. I hate python just for that one reason and I will never use it in my life for any amount of money because I hate when adding/removing one space in the program changes its semantics

    • @aki44
      @aki44 4 года назад +4

      thats what i felt before but now I love the paranthesis, it makes code virtually like lego blocks. Plus there are a lot of tools out there to auto select/colorize/indent parenthesis blocks; after this experience coding without parens looks boring and is harder to grok.

    • @IExSet
      @IExSet 4 месяца назад

      LOL Lua has comparable number of parens. Lua is awful language, I use it in game scripting, it is inconvenient and hard to make DSL using it.

    • @IExSet
      @IExSet 4 месяца назад

      @@ДмитрийВасильев-я6б it is for compiler only, just as }}} in C++ or other languages end end end in Lua. Lispers use indentation to read code, not parens !