If nothing else, this video helped me to grok Closures in a way no other efforts have managed to. Thank you!
@ACCUConf3 жыл бұрын
Great to hear!
@HarishNarayanan Жыл бұрын
This is what I came to say. I loved the whole video but this finally got me to see closures with clarity. Thank you!
@difflocktwo3 жыл бұрын
such a well done presentation. delivery was spot on.
@ACCUConf3 жыл бұрын
Glad you enjoyed it
@takagiro-space6 жыл бұрын
Просто невероятно крутая презентация! Спасибо!
@Qazqi6 жыл бұрын
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.
@macosxfiles5 жыл бұрын
This is very informative. Thank you, Andy!
@brightscripters46854 жыл бұрын
Thanks for this video!
@ACCUConf4 жыл бұрын
Glad it was helpful!
@pazdziochowaty5 жыл бұрын
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
@noralworld6975 жыл бұрын
People like to invent things. Forget things. Invent things. Forget things. And so on
@sebastiangudino93772 жыл бұрын
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)
@maxbesley14122 жыл бұрын
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.
@LGcommaI11 ай бұрын
Extremely relevant re ". I struggle to understand why languages like haskell were created ": kzbin.info/www/bejne/lXuWqWivq7Zrr8U
@LGcommaI11 ай бұрын
Relevant: kzbin.info/www/bejne/lXuWqWivq7Zrr8U
@256k_ Жыл бұрын
fantastic lecture!
@ACCUConf Жыл бұрын
Very glad to hear your appreciative comment!
@ignaciobianchi90373 жыл бұрын
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?
@ajbalaam3 жыл бұрын
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.
@fastundercoverkitgoogle73816 жыл бұрын
Excellent!
@cretinobambino3 жыл бұрын
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).
@themaxpatel3 жыл бұрын
THIS IS SO COOL!
@wreckgar236 жыл бұрын
Very cool!
@gongfei6 жыл бұрын
can't agree more!
@abhishes3 жыл бұрын
Is there a scheme book which covers metaprogramming, macros and streams?
@ajbalaam3 жыл бұрын
Check out Structure and Interpretation of Computer Programs. There is a full copy available for free online, and you can get it in print.
@freedom_aint_free3 жыл бұрын
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.
@nathanruben33724 ай бұрын
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..
@stretch8390Ай бұрын
Because language design isn't judged by the current whims of economic systems that want a particular type of language for a particular type of problem.
@tomwebdisk014 жыл бұрын
Cool Scheme :D
@ACCUConf4 жыл бұрын
Thanks for watching!
@Show_Cast Жыл бұрын
It's 2023 and lisp scheme is going on.
@fabishimwe3 жыл бұрын
Cadddr
@RichardEllwood Жыл бұрын
Lisp is the only truly perfect programming language.
@jacekjacenty5 жыл бұрын
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?
@daver19645 жыл бұрын
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.
@jacekjacenty5 жыл бұрын
@@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.
@LambdaJack5 жыл бұрын
Windoze!? BareMetal!
@insertoyouroemail3 жыл бұрын
@@LambdaJack you can run scheme on bare metal?
@jacekjacenty8 ай бұрын
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.
@xavierthomas19806 жыл бұрын
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 жыл бұрын
))))))))s are nothing but symptom. True illness of Lisp is nesting denoted by them.
@pazdziochowaty5 жыл бұрын
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
@aki444 жыл бұрын
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.
@IExSet9 ай бұрын
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.
@IExSet9 ай бұрын
@@ДмитрийВасильев-я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 !