ABCL (Common Lisp) Installation
7:10
Myth: Lisp Is Slow
4:31
5 ай бұрын
Lisp 1 vs Lisp 2
6:25
6 ай бұрын
What is Lisp used for?
4:56
7 ай бұрын
Пікірлер
@haroldostenger5160
@haroldostenger5160 2 күн бұрын
Do you know of anything like flet for multiplatform (gtk / web/ mobile) implementations usable and integrateable like this from CL ?
@the-lisper
@the-lisper Күн бұрын
No, sorry... The CL ecosystem provides a lot of building blocks, but integration with many platform is a lot of works and requires a bigger community... I think that the best chance is to integrate CL as a shared library (ECL or sbcl-librarian) into some other products outside the CL ecosystem... (or buy LispWorks)
@marknaylor7322
@marknaylor7322 8 күн бұрын
I like how emacs org-mode is used to drive the presentation.
@the-lisper
@the-lisper 6 күн бұрын
Org-mode is convenient everywhere! :P
@40Ants
@40Ants 13 күн бұрын
Really useful video. I heard about py4cl but didn't use for anything practical yet.
@the-lisper
@the-lisper 11 күн бұрын
I also really like the idea, Lisp has to find ways to talk to the outside world. This way it can be used to write the core logic and take advantage of libraries that receive a lot of development!
@user-xo3jc6ih6p
@user-xo3jc6ih6p 18 күн бұрын
Informative! I was aware of those libraries, but as a CL beginner I needed some perspective. These videos are a public service.
@the-lisper
@the-lisper 17 күн бұрын
Yes, I also think that some context is important when choosing a library!
@amorphousblob2721
@amorphousblob2721 29 күн бұрын
With the _closer-mop_ library in most Common Lisp implementations, you can deny access to a slot by defining the SLOT-VALUE-USING-CLASS method. Your method would check if it's being called by an approved caller (using a special variable that either does or doesn't have the correct sentinel variable, and a macro to define approved accessor functions in such a way that the special variable has the sentinel value), and it would signal an error if it wasn't. A metaclass that uses a custom slot type would give you a place to store the visibility of each slot.
@the-lisper
@the-lisper 26 күн бұрын
Thanks for the tip! I think that one should have strong reason to build such a construction, most of the time I would provide the "public interface" and discourage the usage of the "internal interface". The user may mess up at its own risk. Nevertheless, yeah, it is interesting the one can do whatever he wants!
@PixelOutlaw
@PixelOutlaw 29 күн бұрын
I think the CLOS is a very good OOP system. It's unfortunate that C++ and Java have implemented such schizophrenic notions of classes souring an entire generation on what OOP can be. I used functions quite heavily, but for stateful components in a system (especially when I want dispatch) CLOS is excellent. There are quite a few CLOS books too!
@the-lisper
@the-lisper 26 күн бұрын
Yes, "Object-Oriented Programming in COMMON LISP: A Programmer's Guide to CLOS" and "The Art of the Metaobject Protocol" is the way to learn CLOS!
@vinapocalypse
@vinapocalypse Ай бұрын
Do you think its possible to use CFFI to interface with the Unreal Engine APIs? I understand it has its own GC...
@the-lisper
@the-lisper 26 күн бұрын
Sorry, I cannot say because I really don't know its APIs...
@user-xo3jc6ih6p
@user-xo3jc6ih6p Ай бұрын
Excellent approach to teaching! I will imitate it. Thank you!
@the-lisper
@the-lisper Ай бұрын
Thanks!
@simonsaville9962
@simonsaville9962 Ай бұрын
You're a mind reader, I was thinking about getting dirty with some CLOS earlier today. TFTV!
@the-lisper
@the-lisper Ай бұрын
That’s awesome timing! CLOS is such a fascinating topic. Enjoy getting into it, and feel free to comment if you have some questions or interesting discovery!
@puduwatom
@puduwatom Ай бұрын
I'm pretty surprised what CLisp is capable of, but is it safe for production environments ? I'm asking this as a newcomer in the language, because in my whole life I used java and golang for web apps
@the-lisper
@the-lisper Ай бұрын
Yes, SBCL is production ready (see for example www.grammarly.com/blog/engineering/running-lisp-in-production/ )
@JasonSmith80513
@JasonSmith80513 Ай бұрын
Also ABCL for Common Lisp on Java...
@the-lisper
@the-lisper Ай бұрын
At the moment I have little experience with it...
@getpunned
@getpunned Ай бұрын
I'm sure the video title sounds like silly nonsense words to non-programmers 😂 Anyway, good video
@the-lisper
@the-lisper Ай бұрын
Thanks! :)
@anono71
@anono71 Ай бұрын
How much math would one need to know in order to master lisp?
@the-lisper
@the-lisper Ай бұрын
Probably knowing some math may help, it may make you see things in a different way. Nevertheless, it is really not required, one can learn by doing and there are no really prerequisites from math.
@RicardoBigEggs
@RicardoBigEggs Ай бұрын
As someone currently starting with CL, this is very useful. Thanks a lot!
@the-lisper
@the-lisper Ай бұрын
Thanks for the feedback!
@olegharput9988
@olegharput9988 Ай бұрын
Will you make a video for before, after and around methods?
@the-lisper
@the-lisper Ай бұрын
Yes, in the future I may discuss MOP more in details! I wouldn't say "soon"
@piotrkozbial8753
@piotrkozbial8753 Ай бұрын
I think more properly it's a Hindley-Milner type system, used by the whole ML language family, notably OCaml, F# and Haskell.
@the-lisper
@the-lisper Ай бұрын
True, but I thought it was too much for a title, maybe comparing it to OCaml would have been even better since it is not lazy
@RicardoBigEggs
@RicardoBigEggs Ай бұрын
Very interesting
@the-lisper
@the-lisper Ай бұрын
Thanks!
@jacekjacenty
@jacekjacenty Ай бұрын
Did types beat Lisp? Or did Lisp manage to swallow a typed language?
@the-lisper
@the-lisper Ай бұрын
I think that it is not really about win or lose, it is more about freedom (and being able to do everything with macros!)
@jarbihc2714
@jarbihc2714 Ай бұрын
too quiet, even at max volume..
@the-lisper
@the-lisper Ай бұрын
Thanks for the feedback!
@user-ir6yc9me2t
@user-ir6yc9me2t Ай бұрын
とても良い動画ですね。 Doug HoyteのLetOverLambdaのチャプター2(和訳だと第一章) letoverlambda.com/index.cl/guest/chap2.html#sec_7 の、 まとめを読んだ様な気分。古き良きletとlambdaだけでOOモドキが簡単に 出来て楽しい。特にmake-personのリターンが値の一覧では無くてlambdaの 一覧なのが、なんかファンクショナルで良いですね。ところで、 外側のdefunと内側のlambdaの役割分担は、 ・外側のdefun - インスタンスの作成(new) ・内側のlambda - アクセサとかセッター という風に考えて良いのでしょうか? また宣言した*person*を削除(delete-person)する様に改変するなら どの様にしますか? OOとしては足らない機能は何ですか?
@simonsaville9962
@simonsaville9962 2 ай бұрын
Now I understand! Thanks for saving my sanity.
@the-lisper
@the-lisper 2 ай бұрын
The condition system has to be explored a little bit at a time!
@Lucas-md8gg
@Lucas-md8gg 2 ай бұрын
Parabéns!
@the-lisper
@the-lisper 2 ай бұрын
Thanks! :)
@40Ants
@40Ants 2 ай бұрын
Why to write a special reader function and use SHELL syntax for config, when you can just LOAD a lisp file with any code holding config values? Usually I just use UIOP:GETENV in a place where confuration value is used and have (LOAD ".local.lisp") which SETF these variables if .local.lisp file exists. In production these env variables are configured in a dockerfile or in the systemd config.
@the-lisper
@the-lisper 2 ай бұрын
.env file and environmental variables are almost the standard in webapp configuration, you can use the same config directly with your lisp implementation or passing it to docker without changing it
@ciaspo
@ciaspo 2 ай бұрын
Grazie per l'utilissimo video. E che sorpresa vedere che l'autore è un omonimo Italiano! Un saluto dalla Scozia 👋😊
@the-lisper
@the-lisper 2 ай бұрын
Grazie mille per il commento! 😊 Sono felice che il video ti sia stato utile! 👋🇮🇹
@Achy1les
@Achy1les 2 ай бұрын
Very good examples using Portacle. Could you make more videos using Portacle? I am asking it because I know some people who uses Windows who might be interested in Emacs, but never heard about it... And it is a good way to start leading them into the Linux/OpenSource path... Apart from that, when you make new videos about Lisp/Emacs, could you use lighter themes and bigger fonts? Just think about people who are short-sighted and would like to follow your YT channel. Thx.
@the-lisper
@the-lisper 2 ай бұрын
Thanks for the tips! I will think about them!
@MicahKillian
@MicahKillian 2 ай бұрын
Is a series roughly equivalent to a Python generator?
@the-lisper
@the-lisper 2 ай бұрын
They are both lazy, but the main features of the series package are the optimization the compiler is able to do to the code
@Muhd21
@Muhd21 2 ай бұрын
Hello, where could I get a book or a manual for learning Lisp?
@the-lisper
@the-lisper 2 ай бұрын
Hello, I would suggest looking at the resources in the various subreddits related to lisp, there is usually a section with tutorial and books. For example you could start from www.reddit.com/r/lisp/ and then looking at the one regarding the lisp you are interested in, for example common lisp ( www.reddit.com/r/Common_Lisp/ ) or clojure ( www.reddit.com/r/Clojure/ )!
@stefankamphausen6524
@stefankamphausen6524 2 ай бұрын
If you're looking for Common Lisp, get yourself a copy of Peter Seibel's book. It's awesome and also available online. For Clojure, there are many high quality books out there.
@StEven-mv7xc
@StEven-mv7xc 2 ай бұрын
This lisp/htmx combination seems uncommonly flexible, powerfull, simple and expressive!
@the-lisper
@the-lisper 2 ай бұрын
Moreover, the number of dependencies is really small!
@oskarwerner2164
@oskarwerner2164 2 ай бұрын
As I see over internet, most of time let is outside of defun, not inside. Is there any differencea between two approaches?
@the-lisper
@the-lisper 2 ай бұрын
Let-over-lambda means define a function inside another lexical scope, when you call the function you are actually outside that scope but it was not freed because you are still using some references. The outer defun let you "parameterize" the closure, and create basically some "objects"
@oskarwerner2164
@oskarwerner2164 2 ай бұрын
@the-lisper But you could create and parametrize objects with let inside, so I still don't understand difference between (let (defun ...) and (defun (let ...)
@oskarwerner2164
@oskarwerner2164 2 ай бұрын
I think I understand now, you just made function to automate making of counters. Thank you for this video and every other, I love them
@the-lisper
@the-lisper 2 ай бұрын
let-defun basically declare "global" variable, every call to that function share the same variable defun-let-lambda let's you create "parametrized" lexical scope Thanks! :)
@Muhd21
@Muhd21 3 ай бұрын
I was so confused on the back tick operator cause of the accent, I thought it said bactic. Then I read the terminal error which said "Comma not in backquote" and realised lmao
@the-lisper
@the-lisper 3 ай бұрын
Yeah, I said backtick, which is another name for backquote
@DanLoaiza
@DanLoaiza 3 ай бұрын
Instead of using Cursive you give a try to clojure-lsp-intellij. Its a free license plugin.
@the-lisper
@the-lisper 3 ай бұрын
Never used it, I will try it!
@Nerap528
@Nerap528 3 ай бұрын
It would be a blessing if you could show an example of how to cache database queries with redis using lack.middleware.session.store.redis.
@the-lisper
@the-lisper 3 ай бұрын
I put the idea in the backlog!
@luisalamo2658
@luisalamo2658 3 ай бұрын
Thanks for your explanations! I had been considering to learn a Lisp dialect like Scheme or Racket just for fun because I had never met in person someone who knew what the hell Lisp is…
@the-lisper
@the-lisper 3 ай бұрын
That's awesome! Learning a Lisp dialect like Scheme or Racket can be a rewarding adventure!
@lucamazzocco2349
@lucamazzocco2349 3 ай бұрын
Thank you for this tutorial, It was very clear!
@the-lisper
@the-lisper 3 ай бұрын
Glad to hear that! Thanks!
@xabixps
@xabixps 3 ай бұрын
Thanks for the video!! [ Commenting for the algorithm 😉]
@the-lisper
@the-lisper 3 ай бұрын
Thanks!
@FrancescoPischedda
@FrancescoPischedda 3 ай бұрын
I like this format of practical and short videos, also very interesting to see a real world usage of the condition system, thanks for sharing!
@the-lisper
@the-lisper 3 ай бұрын
Glad to hear, thanks! :)
@prateeksharma3817
@prateeksharma3817 3 ай бұрын
Why are some functions names starts with % character?
@the-lisper
@the-lisper 3 ай бұрын
They are implementation details, not meant to be called from the outside
@DnBComplex
@DnBComplex 3 ай бұрын
Thanks man! I love you! My first ever programming language was Lisp, when i read SICP ( even though they use schema), but life made me a Java developer :/ ... Still using Lisp, tho.... And, dude, 3 yrs since i've been in love with Lisp. I hope to find a job that allows me to use it, i'm 20 yrs old, but i don't think the avarege Lisp dev-team would accept someone so young... But thx anyway!! Stay recursive! <3
@the-lisper
@the-lisper 3 ай бұрын
Even if you don't use it in your daily job, I am sure that Lisp makes you a better developer! :)
@Nerap528
@Nerap528 3 ай бұрын
How does streaming data work? For example when generating a png with vecto and using (vecto:save-png-stream <some-ubyte8-stream>).
@the-lisper
@the-lisper 3 ай бұрын
I think flexi-streams is what you are looking for edicl.github.io/flexi-streams/ ! A function like `with-output-to-sequence`
@Nerap528
@Nerap528 3 ай бұрын
@@the-lisper That's exactly what I was looking for. That was of great help. thanks. (flexi-streams:with-output-to-sequence (s :element-type '(unsigned-byte 8)) (gen-captcha s))
@xabixps
@xabixps 3 ай бұрын
Great as always!! Tip for sqlite users: Replace the create-table id :type 'serial with id :type 'integer :autoincrement t
@the-lisper
@the-lisper 3 ай бұрын
Thanks for the tip!
@HA-oq2nx
@HA-oq2nx 3 ай бұрын
Yo i recently discovered this channel and it's really cool! I'm still new in lisp development so I'm really grateful for the information you're sharing. Hope you stick around and teach us some new stuff. Grazie mille
@the-lisper
@the-lisper 3 ай бұрын
Thanks!
@ErikNorlander-go1zv
@ErikNorlander-go1zv 4 ай бұрын
Happy I found your channel, great content on CL, thank you very much!
@the-lisper
@the-lisper 4 ай бұрын
Thanks for the nice comment!
@user-zx3vp8mw7d
@user-zx3vp8mw7d 4 ай бұрын
unable to understand the accent. My native is not English.
@the-lisper
@the-lisper 4 ай бұрын
Sorry doing my best , but I'm not english either...
@adrien335
@adrien335 4 ай бұрын
Just wanted to say thank you for your great videos. I use these tools often, and I would've loved this kind of content when I started out. Keep it up.
@the-lisper
@the-lisper 4 ай бұрын
I was surprised that there is so little about Common Lisp on KZfaq!
@Nerap528
@Nerap528 3 ай бұрын
@@the-lisper Eventually I'll also start to upload videos.
@the-lisper
@the-lisper 3 ай бұрын
@@Nerap528 Awesome!
@andrewsocial9309
@andrewsocial9309 4 ай бұрын
I was not able to combine lack middleware with Ningle as per the example shown
@the-lisper
@the-lisper 4 ай бұрын
I will soon upload the code to GitHub, maybe it will help!
@andrewsocial9309
@andrewsocial9309 4 ай бұрын
@@the-lisper I'm sure it will thank you
@the-lisper
@the-lisper 4 ай бұрын
This is an example from another video in which the session middleware is used together with ningle! github.com/albertolerda/cl-experiments/tree/main/session
@andrewsocial9309
@andrewsocial9309 4 ай бұрын
@@the-lisper thank you for following up! I will have a play with this.
@Ifrit_66
@Ifrit_66 4 ай бұрын
I love clj but haven't tried datomic yet, thanks for this nice vid !
@the-lisper
@the-lisper 4 ай бұрын
You're welcome!
@user-zx3vp8mw7d
@user-zx3vp8mw7d 4 ай бұрын
any video on macros? with proper 4 to 5 examples? Most of the videos just read out definitions
@the-lisper
@the-lisper 4 ай бұрын
Do you mean something like this kzfaq.info/get/bejne/m86RrbGoybq-cnk.html or this kzfaq.info/get/bejne/hJ2RlbKfs7bamWw.html ?
@GEBIRGE
@GEBIRGE 4 ай бұрын
This is extremely helpful, thank you!
@the-lisper
@the-lisper 4 ай бұрын
Glad to hear that!
@andrewsocial9309
@andrewsocial9309 4 ай бұрын
Keep up the good work! What do you think of clog / reblocks / ningle+htmx? Where is the future of lisp web dev
@the-lisper
@the-lisper 4 ай бұрын
At the moment I like web dev and prefer to keep it as simple and "bare metal" as possible, that is why I have chosen ningle+htmx, it is the least you need to write something proficiently.
@mistn
@mistn 4 ай бұрын
It would be interesting to see the books stored in an SQLite database file
@the-lisper
@the-lisper 4 ай бұрын
You can see a simple example for using SQLite here kzfaq.info/get/bejne/pJuFhdmKyZa6hGw.html In the future I plan to do a video also on cl-dbi!
@mistn
@mistn 4 ай бұрын
@@the-lisper Wow! Perfect! I’ll check it out. Thanks