TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: What is the best way to learn Lisp in 2020?

68 pointsby pmohunabout 5 years ago
I&#x27;ve been eyeing Lisp out of the corner of my eye for years. I know I <i>should</i> learn it and it will likely change the way I think about programming.<p>What is the best way to learn Lisp in 2020? I tend to learn best when I have a project to work on that plays to the strength of the language.<p>Some questions: - Should I start with Common Lisp, or some popular dialect (Clojure?) - What are the big patterns that I should be aware of? What is easier to do Lisp than is missing from functional languages like Python? - What are some big projects built in Lisp (other than this site)? - If it&#x27;s so good, why isn&#x27;t it more popular?

35 comments

twallaabout 5 years ago
Racket is nice, as it&#x27;s very &quot;batteries-included&quot;, you get a nice IDE in DrRacket plus a fairly complete standard library.<p>I feel like most people seem to gravitate towards Clojure afterwards for &quot;real&quot; projects - it definitely has the most real world adoption. The Java interop and JVM runtime feel like simultaneously Clojure&#x27;s biggest strength and biggest weakness.<p>Here are some resources for both:<p>[Racket]<p><a href="https:&#x2F;&#x2F;docs.racket-lang.org&#x2F;guide&#x2F;intro.html" rel="nofollow">https:&#x2F;&#x2F;docs.racket-lang.org&#x2F;guide&#x2F;intro.html</a><p><a href="https:&#x2F;&#x2F;htdp.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;htdp.org&#x2F;</a><p><a href="https:&#x2F;&#x2F;beautifulracket.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;beautifulracket.com&#x2F;</a><p>[Clojure]<p><a href="https:&#x2F;&#x2F;www.maria.cloud&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.maria.cloud&#x2F;</a><p><a href="https:&#x2F;&#x2F;www.braveclojure.com&#x2F;clojure-for-the-brave-and-true&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.braveclojure.com&#x2F;clojure-for-the-brave-and-true&#x2F;</a>
评论 #22930707 未加载
评论 #22914787 未加载
_ph_about 5 years ago
I would recommend either a Scheme or Common Lisp, if you really want to learn and understand Lisp. Clojure is an interesting derivative, but if you want to learn Lisp, you should start with one of the above, a little bit dependant on what kind of application appeals to you most.<p>But if you want me to narrow down my recommendation to a single answer, it would be Common Lisp. It has one single comprehensive standard and there is a lot of real-world development done in Common Lisp. Scheme has a smaller standard, so while that is easier to pick up quickly, most Scheme implementations have a lot of extensions for all the stuff not in the small standard :p. So with Common Lisp, you have a much larger overlap between implementations.<p>For development, SBCL is great, as it is a free and open source implementation of Common Lisp which also has one of the best compilers to native code around, with well written code, you can get amazingly fast speed.<p>Practicall Common Lisp is a great resource for learning. It is very comprehensive, covering the important parts of the language and has some real-world examples. Land of Lisp is very nice, a bit more playful.
评论 #22916903 未加载
knbknbabout 5 years ago
If you like MOOCs and video training, checkout this introductory course for absolute beginners:<p>&quot;How to Code: Simple Data&quot; on edX, by Gregor Gregor Kiczales from the University of British Columbia.<p><a href="https:&#x2F;&#x2F;courses.edx.org&#x2F;courses&#x2F;course-v1:UBCx+HtC1x+2T2017&#x2F;course&#x2F;" rel="nofollow">https:&#x2F;&#x2F;courses.edx.org&#x2F;courses&#x2F;course-v1:UBCx+HtC1x+2T2017&#x2F;...</a><p>The course teaches the Racket language, but proceeds at a rapid pace. It follows the &quot;How to Design Programs&quot; methodology developed in the 1990s (?) at MIT (and elsewhere). This is a test-driven-design method, AFAICT. (I think the MOOC author co-developed it while at MIT).<p><a href="https:&#x2F;&#x2F;htdp.org&#x2F;2003-09-26&#x2F;" rel="nofollow">https:&#x2F;&#x2F;htdp.org&#x2F;2003-09-26&#x2F;</a><p>Someone has ported all the SICP exercises to Racket, so you can follow along with that book, too.<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Structure_and_Interpretation_of_Computer_Programs" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Structure_and_Interpretation_o...</a><p>There is a follow-up course, &quot;How to Code: Complex data&quot; but I didn&#x27;t take it.
momo-reinaabout 5 years ago
Algorithm book using Lisp<p><a href="https:&#x2F;&#x2F;leanpub.com&#x2F;progalgs&#x2F;read#leanpub-auto-data-structures-vs-algorithms" rel="nofollow">https:&#x2F;&#x2F;leanpub.com&#x2F;progalgs&#x2F;read#leanpub-auto-data-structur...</a><p>Or a book like Barski’s Land of Lisp<p><a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;Land-Lisp-Learn-Program-Game&#x2F;dp&#x2F;1593272812" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;Land-Lisp-Learn-Program-Game&#x2F;dp&#x2F;15932...</a><p>I would start with Common Lisp.
distantaidennabout 5 years ago
Best way to learn any language: build something. I picked Clojure and haven&#x27;t looked back since.<p>If you keep wondering what&#x27;s the best implementation, then you will suffer from analysis paralysis -- you&#x27;ll end up spinning your wheels and doing nothing.<p>Flip a coin, pick something, and start building.
krat0sprakharabout 5 years ago
I can&#x27;t say its the best way, but I found learning Clojure as my first was really helpful for me. Like you, I prefer working on real projects as well. Given how easy it is to use both Java and JS libraries (Clojurescript) there&#x27;s a bunch of real-world project ideas I could execute on (web apps, CLI tools, cloud-related tooling)
retonomabout 5 years ago
I&#x27;d say via Emacs is the easiest way. You can use org-mode as well which is the best (most customizable and individual) TODO solution that exist IMO. When you want to adapt Emacs to your workflow you are kind of forced to learn Lisp and once you have learned the basics you may be seeing yourself writing Emacs packages even. Progress with learning Clojure from there.
评论 #22914216 未加载
评论 #22914276 未加载
fmakunboundabout 5 years ago
Try learning Common Lisp. There are many book resources and it’s way more fun.<p>Don’t know what you mean you mean by patterns. Meta programming is way easier with Lisps. Python would not normally be classified as functional btw.
评论 #22914039 未加载
评论 #22914019 未加载
typonabout 5 years ago
I would recommend learning Clojure because you can immediately build useful and fun programs with it (e.g. websites with Clojurescript&#x2F;Reagent).
avmichabout 5 years ago
&gt; it will likely change the way I think about programming<p>For some important ideas Lisp brings to the table, I&#x27;d recommend the following approach.<p>1) Read this - <a href="https:&#x2F;&#x2F;stevelosh.com&#x2F;blog&#x2F;2013&#x2F;03&#x2F;list-out-of-lambda&#x2F;" rel="nofollow">https:&#x2F;&#x2F;stevelosh.com&#x2F;blog&#x2F;2013&#x2F;03&#x2F;list-out-of-lambda&#x2F;</a> . If you&#x27;re not familiar with lambda calculus - and if you do, you wouldn&#x27;t likely ask this question - this article has a good chance to make you pause and re-evaluate importance and versatility of functions.<p>The benefit of this article is that the code is in a more traditional JavaScript, and it talks about just some ideas - not the whole landscape, so it&#x27;s relatively short.<p>2) Then read this - <a href="http:&#x2F;&#x2F;www.michaelnielsen.org&#x2F;ddi&#x2F;lisp-as-the-maxwells-equations-of-software&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.michaelnielsen.org&#x2F;ddi&#x2F;lisp-as-the-maxwells-equat...</a> . It&#x27;s quite a project to read this an make all tacitly suggested exercises.<p>The big point is that you can have an expression, which evaluates other expressions - in a chunk one can hope to bite. After this you can aim to write your own interpreters.<p>3) Go to Norvig&#x27;s JScheme - which adds mechanisms from more real Scheme, like tail recursion optimization. By this time you&#x27;ll have some practical ideas about how closures are built; Michael Nielsen uses Python&#x27;s functions for that.<p>4) Read about continuations. Look at &quot;Structure and interpretation of Computer Programs&quot; for solid foundations. Look at &quot;On Lisp&quot; for e.g. treating of macros - both of these books are on the Internet to read. I&#x27;d also recommend checking &quot;Paradigms of Artificial Intelligence Programming&quot; - another book (by Norvig) available on the Internet to read - which teaches Lisp while providing plenty of examples of its use for interesting problems.<p>&quot;The Little Schemer&quot; book (an awesome series) talks about patterns for how to apply Lisp for problems; look at them.<p>You will probably get most out of pp.1 and 2, but the others will expand your horizons. You&#x27;d see why Lisp is at times called &quot;a big ball of mud&quot;, and how this old language somehow manages to become inspiration for new languages, while absorbing new ideas from modern language research.
xsysabout 5 years ago
I would recommend Racket over CL and Clojure. The ecosystem is self-contained (unlike Clojure) and the design is very clean (unlike Common Lisp). Also it comes bundled with a nice and simple IDE. <a href="https:&#x2F;&#x2F;racket-lang.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;racket-lang.org&#x2F;</a>
tester89about 5 years ago
For learning Common Lisp (which is what I’d recommend) there are:<p>* <i>Practical Common Lisp</i> by Peter Sibel. An award-winning book that serves as a serious introduction to the language with many practical projects. [Available to read for free online.](<a href="http:&#x2F;&#x2F;www.gigamonkeys.com&#x2F;book&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.gigamonkeys.com&#x2F;book&#x2F;</a>)<p>* <i>Land of Lisp</i> By Conrad Barski. A fun introduction involving writing silly retro games in Lisp. The author based his book of a short introduction he wrote called [<i>Casting SPELs in Lisp</i>](<a href="http:&#x2F;&#x2F;www.lisperati.com&#x2F;casting.html" rel="nofollow">http:&#x2F;&#x2F;www.lisperati.com&#x2F;casting.html</a>)<p>As an IDE if you’re comfortable with Emacs use Sly, Vim use SLIMV. For Atom there’s SLIMA, a port of Sly should become available for Sublime Text in a month’s time (or whenever ST4 is announced).<p>The reason I recommend Common Lisp is because it’s multi-paradigm, unlike Clojure and Scheme which force you down the functional rabbit-hole (not a bad thing but you won’t learn as much). Another reason is with the tools above it’s very-easy to setup a live coding environment.<p>I would recommend against learning Clojure because the error messages often tie too closely to the JVM, which might be annoying.<p>In terms of big projects, there’s of course HN, also<p>* Emacs<p>* Google Flights<p>* Grammarly<p>* Some quantum computing stuff<p>One of the things which is easier in Lisp is the creation of a Domain-Specific-Languages<p>Look at how [messy and hacky HTML DSL in Python is](<a href="https:&#x2F;&#x2F;github.com&#x2F;duyixian1234&#x2F;html_dsl" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;duyixian1234&#x2F;html_dsl</a>), implementing this in Lisp would’ve been far easier and less hacky than that.<p>But really the main thing is macros (which enable the above), macros allow for easy customisation of the language syntax to better suit the problem at hand.
omiluabout 5 years ago
Watch the SICP video series: <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=-J_xL4IGhJA&amp;list=PLE18841CABEA24090" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=-J_xL4IGhJA&amp;list=PLE18841CAB...</a>
linguaeabout 5 years ago
I had exposure to Scheme during my undergraduate years taking courses in programming languages and compilers, but earlier this year I started learning Common Lisp and I&#x27;m really enjoying the language. It&#x27;s a large language and so mastering it will take a considerable amount of time, but just like C++ you don&#x27;t have to know the entire language to be productive in it.<p>I use SBCL on macOS as my Common Lisp compiler. Regarding developer environments, although I&#x27;m a longtime vi user, I&#x27;m starting to get into Emacs and SLIME, which is an approximation to commercial Lisp environments. Common Lisp is best experienced in an environment like SLIME that has a live Lisp environment (kind of like Python&#x27;s REPL on steroids). I&#x27;m pining for the days of Symbolics Genera, the operating system for Symbolics LISP machines, but sadly it&#x27;s not open source and it&#x27;s extremely difficult to obtain a legal copy these days.<p>Regarding resources, the best introduction I&#x27;ve found is the 1990 book &quot;Common Lisp: A Gentle Introduction to Symbolic Computation,&quot; which is available online at <a href="https:&#x2F;&#x2F;www.cs.cmu.edu&#x2F;~dst&#x2F;LispBook&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.cs.cmu.edu&#x2F;~dst&#x2F;LispBook&#x2F;</a>. This does not cover the entire language, but it covers the basics of the language, including macros. I went through this text and enjoyed its gentle introduction to the language.<p>I plan to purchase the following books to continue my Common Lisp education: &quot;Common Lisp Recipes&quot; (2016) by Edmund Weitz (<a href="http:&#x2F;&#x2F;weitz.de&#x2F;cl-recipes&#x2F;" rel="nofollow">http:&#x2F;&#x2F;weitz.de&#x2F;cl-recipes&#x2F;</a>) and &quot;The Art of the Metaobject Protocol&quot; (1991) by Gregor Kiczales et al (<a href="https:&#x2F;&#x2F;mitpress.mit.edu&#x2F;books&#x2F;art-metaobject-protocol" rel="nofollow">https:&#x2F;&#x2F;mitpress.mit.edu&#x2F;books&#x2F;art-metaobject-protocol</a>)<p>For general references to the language, Guy Steele&#x27;s &quot;Common Lisp the Language, 2nd Edition&quot; is available online at <a href="https:&#x2F;&#x2F;www.cs.cmu.edu&#x2F;Groups&#x2F;AI&#x2F;html&#x2F;cltl&#x2F;cltl2.html" rel="nofollow">https:&#x2F;&#x2F;www.cs.cmu.edu&#x2F;Groups&#x2F;AI&#x2F;html&#x2F;cltl&#x2F;cltl2.html</a>, and the Common Lisp HyperSpec is located at <a href="https:&#x2F;&#x2F;www.cs.cmu.edu&#x2F;Groups&#x2F;AI&#x2F;html&#x2F;hyperspec&#x2F;HyperSpec&#x2F;FrontMatter&#x2F;index.html" rel="nofollow">https:&#x2F;&#x2F;www.cs.cmu.edu&#x2F;Groups&#x2F;AI&#x2F;html&#x2F;hyperspec&#x2F;HyperSpec&#x2F;Fr...</a>.<p>Good luck and have fun!
pjmlpabout 5 years ago
Get hold of the educational versions of Allegro or Lisp Works and learn the real deal.<p><a href="https:&#x2F;&#x2F;franz.com&#x2F;downloads&#x2F;clp&#x2F;survey" rel="nofollow">https:&#x2F;&#x2F;franz.com&#x2F;downloads&#x2F;clp&#x2F;survey</a><p><a href="http:&#x2F;&#x2F;www.lispworks.com&#x2F;products&#x2F;lispworks.html#personal" rel="nofollow">http:&#x2F;&#x2F;www.lispworks.com&#x2F;products&#x2F;lispworks.html#personal</a><p>They are the surviving experience from what Interlisp-D&#x2F;Lisp Machines were thought to be.<p>Or in case you go Clojure, get yourself a copy of Cursive,<p><a href="https:&#x2F;&#x2F;cursive-ide.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;cursive-ide.com&#x2F;</a>
akaterabout 5 years ago
Unless you go with commercial Lisps, you likely won&#x27;t get far without Emacs.<p>Thus, one option to consider (esp. if you&#x27;re not fond of learning by the book) is to just start learning Emacs since you will need it anyway, use Emacs Lisp to configure it and learn the basics hands-on way. That will likely feel “different” enough already to change the way you think about programming, if that&#x27;s one of the goals.<p>No need for books, no need to setup anything, you&#x27;re simply dropped into a huge introspection-enabled sandbox that is about to become your main tool.
jmeisterabout 5 years ago
Scheme + SICP<p><a href="https:&#x2F;&#x2F;mitpress.mit.edu&#x2F;sites&#x2F;default&#x2F;files&#x2F;sicp&#x2F;full-text&#x2F;book&#x2F;book.html" rel="nofollow">https:&#x2F;&#x2F;mitpress.mit.edu&#x2F;sites&#x2F;default&#x2F;files&#x2F;sicp&#x2F;full-text&#x2F;...</a><p>A classic time-tested route that will teach you the “spirit” of Lisp.<p>Has made countless students across generations fall in love with Lisp&#x2F;programming&#x2F;computer science
hestefiskabout 5 years ago
I started on Emacs with elisp. Then picked up Clojure afterwards. It’s a nice way to reason about programs, esp closures, so highly recommend it.
y-yabout 5 years ago
What features of lisp are you looking forward to? If you just want to learn new concepts you want to keep things simple so could just stick with mit-scheme. You didn’t ask, but I would also learn SML (or Haskell) after you have learned some scheme because you will see the diff between type systems and get a lot of practice.
zenlotabout 5 years ago
You could start with How to Design Programs 2e, free[1]. You&#x27;ll get good feeling of Lisp working with Racket-like language (it&#x27;s not a book about Racket). Then you could go with Clojure and work on some real projects.<p>[1] <a href="https:&#x2F;&#x2F;htdp.org" rel="nofollow">https:&#x2F;&#x2F;htdp.org</a>
评论 #22914095 未加载
wikibobabout 5 years ago
Check out DrRacket and associated books
评论 #22913996 未加载
herdrickabout 5 years ago
Your best bet is a wonderful book, The Little Schemer.
评论 #22914151 未加载
评论 #22914123 未加载
j-pbabout 5 years ago
Since you&#x27;re a newcomer I&#x27;d go by community. Clojure has by far the biggest and the friendliest community. Then there&#x27;s scheme with an equally friendly but smaller community. And then theres common lisp. The community is probably bigger than the scheme one, but it&#x27;s also where the zealots are. This thread is the perfect example, all the non CL posts get downvoted no matter how well reasoned they are. And it&#x27;s like that in basically every other clojure&#x2F;lisp post on HN, theres always a small number of toxic common lispers with their &quot;the other lisps aren&#x27;t the real lisps&quot; and &quot;you&#x27;re using it wrong&quot;.
评论 #22932544 未加载
didibusabout 5 years ago
&gt; Should I start with Common Lisp, or some popular dialect (Clojure?)<p>Clojure is not a dialect of Common Lisp. That would be like saying that C#, Go, Kotlin or Scala are dialects of Java. They are both Lisps, but neither is a dialect of one another.<p>I use Clojure at work and recreationally, and I learned Lisps first from it, so I am a bit biased, but I do think Clojure is a good Lisp to learn in 2020. I&#x27;d say Racket is a close second.<p>So my rec would be to learn Clojure, and this is my curriculum of choice:<p>1. Read through: <a href="https:&#x2F;&#x2F;kimh.github.io&#x2F;clojure-by-example&#x2F;#about" rel="nofollow">https:&#x2F;&#x2F;kimh.github.io&#x2F;clojure-by-example&#x2F;#about</a> 2. Then read through: <a href="https:&#x2F;&#x2F;aphyr.com&#x2F;posts&#x2F;301-clojure-from-the-ground-up-welcome" rel="nofollow">https:&#x2F;&#x2F;aphyr.com&#x2F;posts&#x2F;301-clojure-from-the-ground-up-welco...</a> 3. Then read through: <a href="https:&#x2F;&#x2F;clojure.org&#x2F;reference&#x2F;reader" rel="nofollow">https:&#x2F;&#x2F;clojure.org&#x2F;reference&#x2F;reader</a> 4. Now start referring to the Cheatsheet: <a href="https:&#x2F;&#x2F;clojure.org&#x2F;api&#x2F;cheatsheet" rel="nofollow">https:&#x2F;&#x2F;clojure.org&#x2F;api&#x2F;cheatsheet</a> and <a href="https:&#x2F;&#x2F;clojuredocs.org" rel="nofollow">https:&#x2F;&#x2F;clojuredocs.org</a> and <a href="https:&#x2F;&#x2F;cljdoc.org" rel="nofollow">https:&#x2F;&#x2F;cljdoc.org</a>. Bookmark them. 5. Finally, read through guides here: <a href="https:&#x2F;&#x2F;clojure.org&#x2F;guides&#x2F;getting_started" rel="nofollow">https:&#x2F;&#x2F;clojure.org&#x2F;guides&#x2F;getting_started</a> 6. Now go to: <a href="https:&#x2F;&#x2F;4clojure.org" rel="nofollow">https:&#x2F;&#x2F;4clojure.org</a> and go through the exercises, start with elementary and easy. Even better, get the Android app, so you can practice on the go, the bus, the bathroom. Also for some reason the order of exercise in the Android app is the best, so I&#x27;d try and follow that. You don&#x27;t need to go through them all, you can probably stop after easy or medium. 7. Once that&#x27;s done, get Clojure Cookbook and go through the recipes. 8. Oh and, always go to the Clojure slack beginner channel and don&#x27;t hesitate to ask questions and for help. Maybe always have it open in a tab: <a href="https:&#x2F;&#x2F;clojurians.slack.com&#x2F;?redir=%2Fmessages%2Fbeginners%2F" rel="nofollow">https:&#x2F;&#x2F;clojurians.slack.com&#x2F;?redir=%2Fmessages%2Fbeginners%...</a> 9. Now try to build something from scratch, like try to write a tic-tac-toe game, or write a search engine, or whatever you prefer.<p>&gt; What is easier to do Lisp than is missing from functional languages like Python?<p>There are two kinds of Functional language. There are those who rely on first-class functions as their unit of abstraction. In those, functions close over their environment, and can be passed around as values. Python has support for this type of functional programming, but it is somewhat mediocre compared to most Lisps. Python still relies a lot on Classes and Objects, and there are some constraints with the way its functions are first-class especially around anonymous functions and partial application. Scheme and Racket are pros at this when it comes to Lisps.<p>And then there are those where data is immutable, and most functions are pure. In those, everything will be an expression that returns a value, instead of a statement which returns nothing. Recursion will be used for looping, because data can&#x27;t mutate, so it must be passed along. Records will be value based, instead of identity based, because they are immutable. Clojure is the king here when it comes to Lisps.<p>Nothing will be easier to do, especially to you, someone unfamiliar with Lisps, and learning it. But it should be more fun and more rewarding. The development process is more interactive, Lisp languages tend to have every feature under the sun for you to learn and mess around with. Performance should be better than Python, especially if you go for Clojure, Chez Scheme, or SBCL. Also expressiveness is really high, that means anything a little boilerplate, or requiring too much typing or contortioning can be factored out by a Macro. And structural editing is quite productive once you learn how to use it properly.<p>And once you know a Lisp, you can start exploring Emacs, and understanding how Emacs work, and how to modify it to your liking, which is a very fun new world of possibilities.<p>&gt; What are some big projects built in Lisp (other than this site)?<p>There&#x27;s Emacs. I know that Walmart was(still is?) using Clojure for their backend listings I think. I use it at my work for secret stuff ;), but it&#x27;s handling backend micro-services processing thousands of requests per second. Circle CI pretty sure have a mostly Clojure based stack. Consumer Reports online is apparently built in Clojure. Apparently Atlassian have some Clojure backends. Boeing apparently runs some Clojure based in-flight diagnostic. ITA apparently uses CL for searching for airfares. And AutoCad uses CL it seems. NuBank is entirely written in Clojure, a pretty big fintech bank in Brazil of 5000 devs. AdZerk an ad serving company, and NextJournal, an awesome data-science notebook offering both have full on Clojure stacks. Apparently Cisco has a product called Threat Grid which is implemented in Clojure. Clojure&#x2F;Script really dominates in that area compared to other Lisp from what I know here.<p>&gt; If it&#x27;s so good, why isn&#x27;t it more popular?<p>Because everyone that could learn it, like you, back out because they ask this question :p Chicken and Egg is the answer really. Though I&#x27;d say, Lisp is tailored to experts, it doesn&#x27;t make things easy and obvious, it kind of gives you infinite flexibility and customization. It has the opposite mantra of Python, the one and only one way, Lisp is like all and every possible way. So imagine a language that gives you infinite flexibility and customization, and every possible way to do anything and everything, yet is dynamic and without static type to help guide you in any of it, and has a syntax that isn&#x27;t like anything you&#x27;ve learned in school, not like the math you know, not like the English you speak. That kind of language can&#x27;t be wielded by just anybody.
j-pbabout 5 years ago
Go with clojure, it&#x27;s by far the most mind altering Lisp because of it&#x27;s extremely nice immutable datatypes.<p>Common lisp by comparison, feels arcane, outdated and non lispy. You have to learn non composable macro syntaxes, and it&#x27;s often way too low level and concerned about memory and imperative code and OOP.<p>Scheme is nice in terms of self contained purity, but then again not as nice to use and not as mind altering as clojure.<p>Clojure is basically a lisp build around immutable datastructures, common lisp is a lisp build around metaprogramming, and scheme is a lisp build around lambdas.
评论 #22915030 未加载
评论 #22929740 未加载
评论 #22915393 未加载
kazinatorabout 5 years ago
Try TXR Lisp: <a href="https:&#x2F;&#x2F;www.nongnu.org&#x2F;txr" rel="nofollow">https:&#x2F;&#x2F;www.nongnu.org&#x2F;txr</a>.<p>You will have a very useful companion going forward, no matter what you work with.<p>No Emacs required; there is a REPL with persistent history and a decent multi-line editing mode built in, and the project provides an pretty accurate Vim syntax highlighting file (two actually, for the two languages).<p>It&#x27;s conveniently documented in a single man page, like another Unix tool. That man page is also available as a hyperlinked HTML document, also all in one page.
matthewnabout 5 years ago
If you&#x27;d like to start with a light, fun introduction, &quot;Lists and Lists&quot; is an old interactive fiction game from the illustrious Andrew Plotkin, in which a genie gives you puzzles to solve using Scheme.<p>It&#x27;s a delightful introduction to Lisp-y thinking. You can play online, or download and play offline: <a href="https:&#x2F;&#x2F;ifdb.tads.org&#x2F;viewgame?id=zj3ie12ewi1mrj1t" rel="nofollow">https:&#x2F;&#x2F;ifdb.tads.org&#x2F;viewgame?id=zj3ie12ewi1mrj1t</a>
jim-jim-jimabout 5 years ago
I&#x27;d learn Scheme before CL or Clojure. Way smaller; lets you focus on the idea of Lisp instead of a specific (bloated, warty) Lisp dialect.
misframerabout 5 years ago
Try writing an interpreter! “Make a Lisp“[0] and Norvig’s “(How to Write a (Lisp) Interpreter (in Python))”[1] really helped me understand the basics.<p>[0] <a href="https:&#x2F;&#x2F;github.com&#x2F;kanaka&#x2F;mal" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;kanaka&#x2F;mal</a><p>[1] <a href="https:&#x2F;&#x2F;norvig.com&#x2F;lispy.html" rel="nofollow">https:&#x2F;&#x2F;norvig.com&#x2F;lispy.html</a>
smabieabout 5 years ago
I would suggest you start with Racket. It&#x27;s cleaner than both Common Lisp and Racket and the bundled with a nice and beginner friendly IDE. <a href="https:&#x2F;&#x2F;racket-lang.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;racket-lang.org&#x2F;</a><p>Also it comes bundled with tons of useful libraries.
praptakabout 5 years ago
My vote goes to Clojure because it has been reworked from scratch to drop the inessential cruft. To my knowledge hasn&#x27;t re-accummulated the cruft (yet :-) ).<p>It also has quite a lot of ideas that are useful outside Clojure, like its concepts around concurrency, state and immutability.
rman666about 5 years ago
Clearly, the best way to learn Lisp is recursively.
pm321about 5 years ago
Work on a project under the broad umbrella of Guix Guile, GNU-Emacs, etoys squeak? (I am undecided.)
clauderouxabout 5 years ago
you might want to try this one: <a href="https:&#x2F;&#x2F;github.com&#x2F;naver&#x2F;tamgu&#x2F;wiki&#x2F;7.-Lisp-Interpreter" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;naver&#x2F;tamgu&#x2F;wiki&#x2F;7.-Lisp-Interpreter</a>
sdegutisabout 5 years ago
The main things about Lisp:<p>1. The syntax: It&#x27;s just parens&#x2F;brackets, where the first item dictates the meaning of the rest, all separated by whitespace. That&#x27;s the whole syntax of Lisps. If you have a good IDE (e.g. Emacs + CIDER), this can make you slightly faster at editing code than normal.<p>2. Functional programming: Many lisps traditionally use recursion. It&#x27;s not necessarily a core part of Lisp nor is it super great (I avoid it whenever possible). Most of the FP you get from Lisp you can also get from JavaScript and a good FP library (e.g. lodash).<p>3. Immutability: This isn&#x27;t traditionally part of Lisps either, mostly just Clojure, and it can be done with libraries in JS. But people often mix these up and think it&#x27;s a Lisp thing so I listed it here.<p>4. Macros: Many other languages have good macros now (Elixir, Rust, etc). It can be useful in certain situations, especially how it&#x27;s used in Rust&#x27;s stdlib and third party libs, but it&#x27;s not a panacea as commonly thought.<p>5. Homoiconicity: This is one of the biggest touted features of Lisps and I just really don&#x27;t think it&#x27;s that great. It&#x27;s mostly useful in writing macros, but other languages have macro systems that don&#x27;t really suffer from not having this.<p>6. Bootstrapping: The original idea of Lisp being a language that can bootstrap an interpreter of itself using only a tiny set of special-cased evaluation rules (&quot;special forms&quot;) is intellectually neat but not practically useful.<p>7. Common Lisp: This is its own thing. It&#x27;s super complex and some people really love it and swear by it. It&#x27;s kind of like a C++ competitor. It honestly shouldn&#x27;t even be categorized with the rest of the Lisp family. That&#x27;s like saying Europe is part of Italy.
评论 #22914061 未加载