The Carp Language - If Rust And Clojure Had A Baby

  Рет қаралды 14,730

Gavin Freeborn

Gavin Freeborn

Күн бұрын

Пікірлер: 69
@GavinFreeborn
@GavinFreeborn Жыл бұрын
The first 1,000 people to use the link will get a 1 month free trial of Skillshare: skl.sh/gavinfreeborn01231
@defnlife1683
@defnlife1683 Жыл бұрын
I would love a full lisp, clojure or guile series from scratch.
@pavlemackic3811
@pavlemackic3811 Жыл бұрын
Guile would be awesome
@joachimschmidt7662
@joachimschmidt7662 Жыл бұрын
Common Lisp would be awesome
@ohmyv3gatron
@ohmyv3gatron Жыл бұрын
@@joachimschmidt7662 but modernized
@ohmyv3gatron
@ohmyv3gatron Жыл бұрын
I’m so tired of them acting clueless “why do we need a modern web library? What’s http/2?”
@defnlife1683
@defnlife1683 Жыл бұрын
@@ohmyv3gatron I know there’s web frameworks in guile. Like Artanis. Haven’t checked for CL. Hey if we learn CL or Guile we can build them 🤷🏻‍♂️🥃
@codetothemoon
@codetothemoon Жыл бұрын
Gavin - fantastic video, thanks. Somebody suggested I check out Carp but I wasn't able to find a good intro resource at the time - this video is just what I've been looking for
@gorgenfol
@gorgenfol Жыл бұрын
I am so excited about where carp could go. It's no secret, that rust is an impure functional programming language with an unfortunate syntax, and carp is an experiment in fixing that
@AzerAnimations
@AzerAnimations Жыл бұрын
Congrats on getting a sponsorship!
@vikingthedude
@vikingthedude Жыл бұрын
The lisp family is constantly improving and im loving it
@_diversable_
@_diversable_ Жыл бұрын
Have you considered checking out Julia for one of these 'programming language' videos? Julia is very Lisp-like, but it's also a modern language which takes advantage of multiple dispatch as one of its differentiating features. And it's fast ! Just a thought..
@GavinFreeborn
@GavinFreeborn Жыл бұрын
I have, I actually played with it for a bit and made a few proof of concept projects with it. My biggest reasons for not doing it is that it's already decently well known (doesn't really need my help), and doesn't really appeal to my desire to try new things other than it being more ML and datascience focused which is nice but not a direction I wanna push the channel just yet. Though If there is demand for a specific kind of content it's community could benefit from I'd probably do it.
@GavinFreeborn
@GavinFreeborn Жыл бұрын
Let me know if you want more videos on Carp! Small Correction: on Carp using a pass by reference model that's not exactly true since as you can see you need to pass a reference explicitly so how you want to define that is up for debate
@EdouardTavinor
@EdouardTavinor Жыл бұрын
Carp looks like fun :) have you tried typed racket btw? That also has things like ADTs.
@arisweedler4703
@arisweedler4703 Жыл бұрын
I would enjoy more videos on carp 🙌
@GavinFreeborn
@GavinFreeborn Жыл бұрын
@@EdouardTavinor only a little. I haven't written much racket since I last looked at it. Maybe it would be worth a look
@ohmyv3gatron
@ohmyv3gatron Жыл бұрын
I really hope carp picks up steam. People are dreaming about this 😂
@GavinFreeborn
@GavinFreeborn Жыл бұрын
I've been dreaming of it for so long. Part of this video was just a call to action to get more people involved 😅
@EdouardTavinor
@EdouardTavinor Жыл бұрын
Quite a lot of this syntax reminds me of Haskell, for example defining the type signature and then defining the function in another line. I imagine Carp supports things like flatmap for options/maybe (i think Haskell calls this monadic bind).
@arisweedler4703
@arisweedler4703 Жыл бұрын
It’s gotta - you can’t work with monads without that function!! (Well… you can, but it’s significantly less powerful…)
@AndersJackson
@AndersJackson Жыл бұрын
@@arisweedler4703 arrays are monads. Lists are monads. And Options and Results are also monads. Like in OCaml.
@arisweedler4703
@arisweedler4703 Жыл бұрын
@@AndersJackson yes. And “bind” or composing functions that take data and return monads is implemented differently for each one of those monads
@felipedidio4698
@felipedidio4698 Жыл бұрын
You can do lisp with rust macros, you can probably do closure too.
@BraxtonMeyer
@BraxtonMeyer Жыл бұрын
I'd say making documentation less necessary isn't a good thing but the typing provides more clarity alongside documentation Also congrats on your sponsorship
@GavinFreeborn
@GavinFreeborn Жыл бұрын
Haha ya there is definitely a dark side to that statement 😅. Coming from CL I was thinking of when I end up using these excellent libraries but often they have nearly completely undocumented functions. Having at least a type signature to go off of helps. Also thanks I think it's a good fit for the channel 😊
@ZantierTasa
@ZantierTasa Жыл бұрын
The best fish-themed language since Homespring.
@eugenej.5584
@eugenej.5584 Жыл бұрын
17:34 algebraic data types
@mzakyr342
@mzakyr342 10 ай бұрын
How do they do the six hour scene? Like a crab and a logo
@maxreuv
@maxreuv Жыл бұрын
Looks a lot like Haskell wrapped in Lisp syntax, except perhaps the GC. IO, Maybe, etc are proper monads, e.g. complete with flatMap, pure (unit), etc?
@GavinFreeborn
@GavinFreeborn Жыл бұрын
Ya there are lots of Haskell inspirations. Most of them are only as deep as naming. So the language isn't pure. All of the IO module does not actually return an IO monad which some could see as a pro or a con. I would be happy either way honestly.
@maxreuv
@maxreuv Жыл бұрын
@@GavinFreeborn It often feels quite comfortable in a monad's embrace:)
@rickdixon1928
@rickdixon1928 Жыл бұрын
Gavin, this might seem random but, what theme are you using in Emacs here? Looks nice. Thanks!
@AzerAnimations
@AzerAnimations Жыл бұрын
What emacs theme do you use? I quite like it
@GavinFreeborn
@GavinFreeborn Жыл бұрын
I currently use my port of the old vim theme I used to use github.com/Gavinok/emacs.d/tree/main/lisp/spaceway I should probably package it up at some point
@laughingvampire7555
@laughingvampire7555 Жыл бұрын
I would love to have this lisp complete and then rewrite emacs in it
@moumnalmunawy1806
@moumnalmunawy1806 Жыл бұрын
Man, what is that thumbnail 😂 I also recommend doing a video about clog :)
@arisweedler4703
@arisweedler4703 Жыл бұрын
ADT ==> Algebraic data type, not Abstract!
@GavinFreeborn
@GavinFreeborn Жыл бұрын
Ah there we go I even editing forgot to sneak that in. Thanks for the correction. I have had just the acronym in my head for so long it's hard to go back.
@miisa9695
@miisa9695 Жыл бұрын
Hi Gavin, what font is used in the video?
@altairbueno5637
@altairbueno5637 Жыл бұрын
It’s probably running slow because is a debug build
@beauteetmusculation8191
@beauteetmusculation8191 Жыл бұрын
Haskell. 💖
@PestisNonSapien_GMO_exHuman
@PestisNonSapien_GMO_exHuman Жыл бұрын
I avoided clojure because it runs on top of java. Java can lag a super computer. Compiles to C? More people would get into it if it compiled to rust. Speaking of compiles to C. Have you looked into V? Shell scripting in V looks cool.
@jaysistar2711
@jaysistar2711 Жыл бұрын
I wondered why this sort of thing (borrow checking) hadn't happened in a Lispy language first.
@walbus1190
@walbus1190 Жыл бұрын
Most languages, including Rust, are pass by value, not pass by reference. C++ and PHP has the option of pass by reference, but i rarely see it used.
@GavinFreeborn
@GavinFreeborn Жыл бұрын
I guess I was thinking of common lisp, java, and python. As mentioned in my comment this statement in the video isn't exactly accurate (and practically wrong if me to say) saying that this is pass by reference.
@EdouardTavinor
@EdouardTavinor Жыл бұрын
@@GavinFreeborn Java is also pass by value btw. Pass by reference i only know of from C# (out parameters) and C++.
@xGOKOPx
@xGOKOPx Жыл бұрын
"but i rarely see it used." You rarely see pass by reference in C++? How much C++ code have you seen? Everything that's large or shouldn't be copied for other reasons should be passed as const& (just & if you want to modify it ofc)
@walbus1190
@walbus1190 Жыл бұрын
@@xGOKOPx I do not often look at c++. The times that I have people have mostly used pointers and smart pointers to large data, passing the pointers around with pass by value.
@wesleystudt8084
@wesleystudt8084 Жыл бұрын
I don’t think it’s accurate to say that Rust is pass by value though, because of Rust’s ownership rules.
@_tsu_
@_tsu_ 9 ай бұрын
Lmao you know it's a research project when it's written in Haskell
@jacquesdurand4416
@jacquesdurand4416 Жыл бұрын
Big issue with Carp for me is, that there is not very much I/O libs. (HTTP, DB, Server/Clients, CSV, parsers etc) Thus it's hard to use it for "a real thing"
@ianthebadguy
@ianthebadguy Жыл бұрын
Reply to this comment if you ended up on Gavin's channel searching for information about the education-market-exclusive Apple eMac
Why Are Lisp Macros So Great!?
16:28
Gavin Freeborn
Рет қаралды 16 М.
The Rise & Fall of LISP - Too Good For The Rest Of the World
17:44
Gavin Freeborn
Рет қаралды 41 М.
Я сделала самое маленькое в мире мороженое!
00:43
啊?就这么水灵灵的穿上了?
00:18
一航1
Рет қаралды 98 МЛН
What's in the clown's bag? #clown #angel #bunnypolice
00:19
超人夫妇
Рет қаралды 38 МЛН
What Makes Rust Different?
12:38
No Boilerplate
Рет қаралды 204 М.
The Dream Programming Language? Lobster
20:55
Code to the Moon
Рет қаралды 152 М.
Why JavaScript Devs are Switching to Rust in 2024
10:35
warpdotdev
Рет қаралды 260 М.
Clojure in production: what do we use in real-world services?
19:03
Why You Should Learn Lisp In 2024
21:50
Gavin Freeborn
Рет қаралды 66 М.
Learn Emacs Lisp in 30 Minutes
30:22
Gavin Freeborn
Рет қаралды 10 М.
From C ➡️ C++ ➡️  Rust
14:06
code_report
Рет қаралды 171 М.
Rewrite Your Scripts In LISP - with Roswell
21:23
Gavin Freeborn
Рет қаралды 21 М.
LOOP Common Lisps Superior For
20:53
Gavin Freeborn
Рет қаралды 11 М.
Я сделала самое маленькое в мире мороженое!
00:43