Do you know of anything like flet for multiplatform (gtk / web/ mobile) implementations usable and integrateable like this from CL ?
@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)
@marknaylor73228 күн бұрын
I like how emacs org-mode is used to drive the presentation.
@the-lisper6 күн бұрын
Org-mode is convenient everywhere! :P
@40Ants13 күн бұрын
Really useful video. I heard about py4cl but didn't use for anything practical yet.
@the-lisper11 күн бұрын
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-xo3jc6ih6p18 күн бұрын
Informative! I was aware of those libraries, but as a CL beginner I needed some perspective. These videos are a public service.
@the-lisper17 күн бұрын
Yes, I also think that some context is important when choosing a library!
@amorphousblob272129 күн бұрын
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-lisper26 күн бұрын
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!
@PixelOutlaw29 күн бұрын
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-lisper26 күн бұрын
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Ай бұрын
Do you think its possible to use CFFI to interface with the Unreal Engine APIs? I understand it has its own GC...
@the-lisper26 күн бұрын
Sorry, I cannot say because I really don't know its APIs...
@user-xo3jc6ih6pАй бұрын
Excellent approach to teaching! I will imitate it. Thank you!
@the-lisperАй бұрын
Thanks!
@simonsaville9962Ай бұрын
You're a mind reader, I was thinking about getting dirty with some CLOS earlier today. TFTV!
@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Ай бұрын
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Ай бұрын
Yes, SBCL is production ready (see for example www.grammarly.com/blog/engineering/running-lisp-in-production/ )
@JasonSmith80513Ай бұрын
Also ABCL for Common Lisp on Java...
@the-lisperАй бұрын
At the moment I have little experience with it...
@getpunnedАй бұрын
I'm sure the video title sounds like silly nonsense words to non-programmers 😂 Anyway, good video
@the-lisperАй бұрын
Thanks! :)
@anono71Ай бұрын
How much math would one need to know in order to master lisp?
@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Ай бұрын
As someone currently starting with CL, this is very useful. Thanks a lot!
@the-lisperАй бұрын
Thanks for the feedback!
@olegharput9988Ай бұрын
Will you make a video for before, after and around methods?
@the-lisperАй бұрын
Yes, in the future I may discuss MOP more in details! I wouldn't say "soon"
@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Ай бұрын
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Ай бұрын
Very interesting
@the-lisperАй бұрын
Thanks!
@jacekjacentyАй бұрын
Did types beat Lisp? Or did Lisp manage to swallow a typed language?
@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!)
The condition system has to be explored a little bit at a time!
@Lucas-md8gg2 ай бұрын
Parabéns!
@the-lisper2 ай бұрын
Thanks! :)
@40Ants2 ай бұрын
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-lisper2 ай бұрын
.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
@ciaspo2 ай бұрын
Grazie per l'utilissimo video. E che sorpresa vedere che l'autore è un omonimo Italiano! Un saluto dalla Scozia 👋😊
@the-lisper2 ай бұрын
Grazie mille per il commento! 😊 Sono felice che il video ti sia stato utile! 👋🇮🇹
@Achy1les2 ай бұрын
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-lisper2 ай бұрын
Thanks for the tips! I will think about them!
@MicahKillian2 ай бұрын
Is a series roughly equivalent to a Python generator?
@the-lisper2 ай бұрын
They are both lazy, but the main features of the series package are the optimization the compiler is able to do to the code
@Muhd212 ай бұрын
Hello, where could I get a book or a manual for learning Lisp?
@the-lisper2 ай бұрын
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/ )!
@stefankamphausen65242 ай бұрын
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-mv7xc2 ай бұрын
This lisp/htmx combination seems uncommonly flexible, powerfull, simple and expressive!
@the-lisper2 ай бұрын
Moreover, the number of dependencies is really small!
@oskarwerner21642 ай бұрын
As I see over internet, most of time let is outside of defun, not inside. Is there any differencea between two approaches?
@the-lisper2 ай бұрын
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"
@oskarwerner21642 ай бұрын
@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 ...)
@oskarwerner21642 ай бұрын
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-lisper2 ай бұрын
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! :)
@Muhd213 ай бұрын
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-lisper3 ай бұрын
Yeah, I said backtick, which is another name for backquote
@DanLoaiza3 ай бұрын
Instead of using Cursive you give a try to clojure-lsp-intellij. Its a free license plugin.
@the-lisper3 ай бұрын
Never used it, I will try it!
@Nerap5283 ай бұрын
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-lisper3 ай бұрын
I put the idea in the backlog!
@luisalamo26583 ай бұрын
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-lisper3 ай бұрын
That's awesome! Learning a Lisp dialect like Scheme or Racket can be a rewarding adventure!
@lucamazzocco23493 ай бұрын
Thank you for this tutorial, It was very clear!
@the-lisper3 ай бұрын
Glad to hear that! Thanks!
@xabixps3 ай бұрын
Thanks for the video!! [ Commenting for the algorithm 😉]
@the-lisper3 ай бұрын
Thanks!
@FrancescoPischedda3 ай бұрын
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-lisper3 ай бұрын
Glad to hear, thanks! :)
@prateeksharma38173 ай бұрын
Why are some functions names starts with % character?
@the-lisper3 ай бұрын
They are implementation details, not meant to be called from the outside
@DnBComplex3 ай бұрын
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-lisper3 ай бұрын
Even if you don't use it in your daily job, I am sure that Lisp makes you a better developer! :)
@Nerap5283 ай бұрын
How does streaming data work? For example when generating a png with vecto and using (vecto:save-png-stream <some-ubyte8-stream>).
@the-lisper3 ай бұрын
I think flexi-streams is what you are looking for edicl.github.io/flexi-streams/ ! A function like `with-output-to-sequence`
@Nerap5283 ай бұрын
@@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))
@xabixps3 ай бұрын
Great as always!! Tip for sqlite users: Replace the create-table id :type 'serial with id :type 'integer :autoincrement t
@the-lisper3 ай бұрын
Thanks for the tip!
@HA-oq2nx3 ай бұрын
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-lisper3 ай бұрын
Thanks!
@ErikNorlander-go1zv4 ай бұрын
Happy I found your channel, great content on CL, thank you very much!
@the-lisper4 ай бұрын
Thanks for the nice comment!
@user-zx3vp8mw7d4 ай бұрын
unable to understand the accent. My native is not English.
@the-lisper4 ай бұрын
Sorry doing my best , but I'm not english either...
@adrien3354 ай бұрын
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-lisper4 ай бұрын
I was surprised that there is so little about Common Lisp on KZfaq!
@Nerap5283 ай бұрын
@@the-lisper Eventually I'll also start to upload videos.
@the-lisper3 ай бұрын
@@Nerap528 Awesome!
@andrewsocial93094 ай бұрын
I was not able to combine lack middleware with Ningle as per the example shown
@the-lisper4 ай бұрын
I will soon upload the code to GitHub, maybe it will help!
@andrewsocial93094 ай бұрын
@@the-lisper I'm sure it will thank you
@the-lisper4 ай бұрын
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
@andrewsocial93094 ай бұрын
@@the-lisper thank you for following up! I will have a play with this.
@Ifrit_664 ай бұрын
I love clj but haven't tried datomic yet, thanks for this nice vid !
@the-lisper4 ай бұрын
You're welcome!
@user-zx3vp8mw7d4 ай бұрын
any video on macros? with proper 4 to 5 examples? Most of the videos just read out definitions
@the-lisper4 ай бұрын
Do you mean something like this kzfaq.info/get/bejne/m86RrbGoybq-cnk.html or this kzfaq.info/get/bejne/hJ2RlbKfs7bamWw.html ?
@GEBIRGE4 ай бұрын
This is extremely helpful, thank you!
@the-lisper4 ай бұрын
Glad to hear that!
@andrewsocial93094 ай бұрын
Keep up the good work! What do you think of clog / reblocks / ningle+htmx? Where is the future of lisp web dev
@the-lisper4 ай бұрын
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.
@mistn4 ай бұрын
It would be interesting to see the books stored in an SQLite database file
@the-lisper4 ай бұрын
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!
@mistn4 ай бұрын
@@the-lisper Wow! Perfect! I’ll check it out. Thanks