28 ms·
Common Lisp homepage
- terminalcommand 8y agoGreat site, seems to have a good collection of lisp resources. I am waiting for the documentation to go online, it says it is still parsing the TeX sources of the commonlisp hyperspec. As a side note, I downloaded the Lispworks Common Lisp Hyperspec, but I could only find the HTML version. I see that the project is on Github, maybe someone will parse the Hyperspec and generate the documentation pages. I am adding a reminder to my org-agenda for next month, maybe I will attempt to do it :).
- hjek 8y agoIt looks like the Hyperspec license doesn't permit distributing documentation pages: > Permission to make partial copies is expressly NOT granted, EXCEPT that limited permission is granted to transmit and display a partial copy the Common Lisp HyperSpec for the ordinary purpose of direct viewing by a human being in the usual manner that hypertext browsers permit the viewing of such a complete document, provided that no recopying, redistribution, redisplay, or retransmission is made of any such partial copy. Source: http://www.lispworks.com/documentation/HyperSpec/Front/Help.htm http://www.lispworks.com/documentation/HyperSpec/Front/Help.... But I guess you could distribute a script that does the processing.
- draven 8y agoReading the whole thing it seems you're allowed to distribute it as is without changing anything, and not getting any commercial advantage out of the distribution. There's this: https://github.com/LispLang/ansi-spec https://github.com/LispLang/ansi-spec Working from the TeX sources seem to be the right way to go especially if the information can get extracted into a generic representation so there could be a HTML / epub / whatever version
- svetlyak40wt 8y agoThere is already a good PDF version of the Common Lisp Standard Draft. You can download it here: http://cvberry.com/tech_writings/notes/common_lisp_standard_draft.html http://cvberry.com/tech_writings/notes/common_lisp_standard_...
- cup-of-tea 8y agoI use this inside emacs: https://www.emacswiki.org/emacs/CommonLispHyperspec https://www.emacswiki.org/emacs/CommonLispHyperspec
- pure-awesome 8y agoWhat exactly is meant by the line "Design patterns disappear as you adapt the language to your problem domain." The word "disappear" is a hyperlink to a pdf, which refers to domain-specific design-patterns. I don't quite seem to grasp what is being implied on the home-page. Is it something like Lisp is very customizable and allows you to easily overload operators? (I am primarily a Java programmer and have never used Lisp). EDIT: I mean, e.g. this page asks "Are Design Patterns Missing Language Features" http://wiki.c2.com/?AreDesignPatternsMissingLanguageFeatures http://wiki.c2.com/?AreDesignPatternsMissingLanguageFeatures Is this what's being referred to, and if so, what makes Lisp especially good for adding language features?
- giancarlostoro 8y agoIndeed Lisps claim to fame is how much the language itself is extensible. Something along the lines of "you rewrite the language / expand it" for whatever project you're working on. Writing your own lisp interpreter is another popular type of project people do as well given how simple Lisps syntax is to parse and follow. If you are interested in Lisp on the JVM check out Clojure.
- JaumeGreen 8y agoLisp macros are what make lisp extensible. They make it extensible in a way that make it indistinguishable from language features. The best simple explanatin I found for macros is this one [0]. In a rough sumary: you could add to lisp any "missing" functionality -present in another language- with just macros (without altering the compiler/interpreter), and this functionality would work as if it was in the compiler/interpreter from the beginning. [0] http://www.gigamonkeys.com/book/macros-defining-your-own.html http://www.gigamonkeys.com/book/macros-defining-your-own.htm...
- susam 8y agoLisp is quite popular at my current workplace. A few popular open source projects published by our organization have been written in Clojure (a dialect of Lisp that runs on JVM and CLR). A few domain specific languages used internally in our organization are also inspired by Lisp. On a more personal front, I find Lisp to be simple, elegant, and expressive. I use Common Lisp (SBCL) for personal use. Working with Lisp induces a sense of wonder: how simple concepts can be composed elegantly to build complex functions and complex software. It's the same kind of sense of wonder one feels when one learns how the simple concepts of Euclid's postulates can be used to prove complex concepts in Geometry or how the Newton's laws of motion can be used to derive intricate and complex concepts in classical physics. I sometimes wonder why Lisp has not been more popular in the technology industry. Is it the lack of sufficient marketing? Is it the lack of an extensive library ecosystem? I hope Quicklisp will address the concern about library ecosystem for Common Lisp. I encourage everyone to learn Lisp and, if feasible, write a rudimentary interpreter or compiler for Lisp s-expressions. It's one of those things that can broaden's one horizon in the field of computing.
- s_kilk 8y ago> I sometimes wonder why Lisp has not been more popular in the technology industry. Is it the lack of sufficient marketing? Is it the lack of an extensive library ecosystem? Data-point of one here, but I was instantly turned off by the conflation of the empty-list, nil, and boolean-false. I could tell instantly that I'd have a hard time interfacing with data from other real-world systems, so I decided to skip CL and stick to Clojure and various Schemes for my lispy kicks.
- xyrouter 8y agoIsn't that true in Python too?
- s_kilk 8y agoNot really, the empty list, None, and False are distinct values in Python. In [1]: [] is None Out[1]: False In [2]: [] is False Out[2]: False In [3]: [] == False Out[3]: False In [4]: [] == None Out[4]: False In [5]: False is None Out[5]: False In [6]: False == None Out[6]: False This kind of relatively fine-grained distinction between different types of data is essential for operation in a world where other systems presume that you can handle these distinctions.
- susam 8y agoOften those who are curious to try Lisp are faced with a number of choices: Which dialect to choose? Which implementation to choose? Which book or tutorial should one follow? Is it necessary use Emacs? SLIME? Here are my recommendations: - Choose Common Lisp because it has been the most popular dialect of Lisp in the overall history of Lisp. It is more convenient than Scheme if one decides to develop serious software in Lisp. Clojure appears to be more popular in the technology industry than Common Lisp among organizations (my workplace included) that use Lisp. I still recommend Common Lisp because I believe that it is more likely that one would work on an independent open source or hobby Lisp project than one would encounter one of the rare organizations who use Clojure at work. - Choose SBCL (Steel Bank Common Lisp) as the implementation.[1][2] It is the most popular Common Lisp implementation and is recommended in many online discussions. CCL (Clozure CL, not to be confused with Clojure which is a separate dialect) is also another very good implementation. I still recommend SBCL because as a result of its greater popularity, it is readily available via package managers such as brew and apt-get as well IDE packages such as Portacle, Lisp in a Box, etc. CCL is currently missing from both brew and apt-get. - Work through this book: Practical Common Lisp: http://www.gigamonkeys.com/book/ http://www.gigamonkeys.com/book/ (available in print too if you search online). Skip the sections about Emacs and SLIME if you don't use Emacs. - There is no need to use Emacs if you are not an Emacs user. Any good editor would do. - A Vim user may consider installing Slimv[3][4]. Superior Lisp Interaction Mode for Vim ("SLIME for Vim") or Slimv is similar to Emacs/SLIME, displays the REPL in a Vim buffer, and comes with Paredit mode that makes typing and executing Lisp code quite convenient. - Emacs with SLIME or Vim with Slimv are quite useful but not necessary. To get started quickly without being bogged down by the details of an editor, just execute the Lisp source code file on shell.[5] - Optionally, keep another implementation of Common Lisp. Common Lisp is a standard that is implemented by various implementations. Each implementation may have its own extensions or implementation-specific behaviour regarding error handling, command line options, FASL format, unspecified behaviour, etc. Experimenting with concepts with another implementation of Lisp occasionally may offer some perspective about how some things could be different in different implementations. I keep CLISP around for this purpose.[6][7][8] [1]: Install SBCL on macOS: brew install sbcl [2]: Install SBCL on Debian-based distro: apt-get install sbcl [3]: Slimv in a ZIP file: https://www.vim.org/scripts/script.php?script_id=2531 https://www.vim.org/scripts/script.php?script_id=2531 [4]: Slimv as a Git repo: https://github.com/kovisoft/slimv/ https://github.com/kovisoft/slimv/ [5]: Load (execute) code in a file and exit: sbcl --script foo.lisp [6]: Install CLISP on macOS: brew install clisp [7]: Install CLISP on Debian-based distro: apt-get install clisp [8]: Unfortunately CLISP is missing from Debian's stretch (stable) repository but it is available in its buster (testing) and sid (unstable) repositories. Hopefully this will be addressed when buster becomes stable. CLISP is available on Ubuntu.
- elbear 8y agoI know the article is about Common Lisp, but I have a question about Racket, Typed Racket specifically. Can anyone say if types and Lisp play well together? Are there any success stories?
- thibran 8y agoIt might surprise you, but Lisp is actually mixed typed. Here 'object' is of the type integer: (defmethod description ((object integer)) (format nil "The integer ~D" object)) http://lisp-lang.org/learn/clos http://lisp-lang.org/learn/clos
- rurban 8y agoTypes are supported since the 80ies, with (the) and optional declarations. Almost nobody uses them. Well, CL says: types are always carried around in every value, so we do have types, and we are always type-safe. Which is a proper point. Then SBCL has superior internal type support in its python compiler, leading to many optimizations. It creates specialized copies of typed methods, and has a nice optimizer framework to deal with that. Felleisen (Typed Racket) seems to hate types, he summarizes it with types make racket slower, not faster. But he is still developing the only seriously typed scheme effort. Forgot about Stalin, but if I remember correctly it was similar to the CMUCL/python type optimizer. In my dynamic language I've implemented gradual typing with great success (cperl): more precise, producing better specialized code, faster, detecting more errors at compile-time and better documentation, so I'm sceptical why Felleisen has so many problems. But I implemented it with performance in mind (premature optimization and such), not completeness. Typed php seems also to go well, also the various JavaScript variants. Just scheme, python and ruby not so.
- catnaroek 8y agoTyped Racket is more ambitious than other attempts at adding types to an underlying untyped language. Namely, Typed Racket guarantees that typed code is never to blame for certain contract violations, and, if any such contract violation happens, it will be properly traced back to an offending piece of untyped code. This is what makes gradual types gradual (as opposed to merely optional), alas, it is also what has been found to have unacceptable overhead. Relevant paper and talk: http://www.ccis.northeastern.edu/home/types/publications/gradual-dead/pre-treatment.pdf http://www.ccis.northeastern.edu/home/types/publications/gra... https://www.youtube.com/watch?v=1u1JGwmW0IQ https://www.youtube.com/watch?v=1u1JGwmW0IQ
- mark_l_watson 8y agoNice web site! I have been using Common Lisp since 1983 when I updated my Xerox 1108 Lisp Nachine. In the last 35 years I have probably only averaged using Commin Lisp for about 10% of my development but still love the language. One problem the Lisp world has is too many fine implementations of dialects of different Lisp languages. I find it impossible to not experiment with most of them.
- xyrouter 8y agoWhat insights do you gain by experimenting with different implementations of Common Lisp? Can you share some of those insights or things you learnt by experimenting with different implementations of Common Lisp?
- mark_l_watson 8y agoI don’t have much to say about different versions of Common Lisp. I have mostly been using SBCL for years, except sometime switching to Clozure for faster compilation. I experiment more with different versions of Scheme: Gambit, Chez, and Guile. I really like the Racket ecosystem - a lot of good work is done around Racket. I don;t much use Clozure (except for my hobby site cookingspace.com) unless I am using it because that is what a customer uses. Church, for Probabilistic programming is interesting but it was apparently been supplanted by WebPPL(which is not a Lisp).
- lispm 8y agoFor those who want to use Lisp on the JVM, there is ABCL: https://abcl.org https://abcl.org ABCL was originally used to write and extend an editor called J - but then morphed into a full implementation of Common Lisp. One can also develop with SBCL - since it has a great compiler - and then move the code to ABCL.
- lunchladydoris 8y agoIf you fancy giving Lisp a try, look into Portacle [0]. I've not used this exactly but I did install all the components myself over time and they play together nicely. [0]: https://portacle.github.io/ https://portacle.github.io/
- mping 8y agoMy AI class teacher was one of the founders of Siscog. I learned scheme and lisp at college too. Glad to see his company being mentioned.
- gbl08ma 8y agoYou might be pleased or displeased to know that at Técnico they no longer teach Scheme in the introductory programming course, nowadays it's Python. When I did the AI course, the project was still to be developed in Lisp, but more recently I recall hearing that they were thinking of switching to another language because "nobody can stand lisp". Fun fact: one of the founders of Siscog, Ernesto Morgado[1], is big in the rice business, and is/was the president of multiple rice millers associations. Both Pavão Martins and Ernesto Morgado still lecture at Técnico. [1] https://en.wikipedia.org/wiki/Ernesto_Morgado https://en.wikipedia.org/wiki/Ernesto_Morgado
- mping 8y agoIn hindsight, displeased for sure.
- FractalLP 8y agohttp://lisp-lang.org/success/ http://lisp-lang.org/success/
- drmeister 8y agoThis is a very nice web site describing a programming language with unparalleled expressiveness, power and permanence. I am heavily invested in Common Lisp. We are developing a programming environment for designing new materials and molecules called Cando (https://github.com/drmeister/cando https://github.com/drmeister/cando) using Common Lisp as a scripting language. Cando is running on Clasp (https://github.com/clasp-developers/clasp https://github.com/clasp-developers/clasp), a new Common Lisp implementation that interoperates with C++ and is based on LLVM. What attracted me to the language, after 35 years programming in almost everything else, was how organically it lets one write software and how I don't have to worry about it fading like the next programming fad.
- e12e 8y agoHi, great fan of your presentations on clasp. Have you had an opportunity to look at Julia? It seems that there is some overlap in what can be achieved - with some obvious differences: as I understand it you had a lot of c++ - that could probably (today) be linked from julia, but not "integrated", starting from a green field with Julia, ideally one could do most things in Julia - maybe with some help from rust. And Julia is not a common lisp, obviously. But in merging a high level language and the love, it seems Julia has been successful in getting a lot of real-world, "all Julia" libraries, with "sufficient" performance. If you were starting over today - would you still prefer to build a common lisp with close integration to c++?
- drmeister 8y agoThank you. I did choose Common Lisp over Julia - I started learning Common Lisp in 2013 and Julia started becoming something around 2012. I did so because of the permanence and the demonstrated expressiveness and power of Common Lisp. Common Lisp has been around for almost five times longer than Julia, and Common Lisp has demonstrated again and again that it is capable of solving hard, poorly understood, real world problems in a lot of domains. Fun fact: Julia bootstraps off of an implementation of Lisp. Furthermore, most compiled languages are translated into an abstract syntax tree (AST) as part of compilation. Lisp S-expressions are a text based AST. So I can make the argument that Lisp is as close the "One True Programming Language" that we have. :-) I'm doing chemistry - that's fundamental and timeless - I find it maps beautifully to a fundamental and timeless language like Lisp.
- xyproto 8y ago(mapcar #'string-downcase (list "Hello" "world!")) This is a great example of why I don't want to use Common Lisp. Compare with Python: [word.lower() for word in ("Hello", "world!")] Beating Node and Ruby in terms of speed is also a big non-argument, with so many attractive programming languages to choose from that are both fast and good looking.
- m00natic 8y agoLooking at https://sites.google.com/view/energy-efficiency-languages/results https://sites.google.com/view/energy-efficiency-languages/re... Common Lisp is beating on performance surprising number of static languages too. Despite being more dynamic and flexible than any other language.
- pavelludiq 8y ago(loop for item in '("Hello" "world!") collect (string-downcase item))
- deleted 8y ago[deleted]
- klibertp 8y agoCan you elaborate on why? I know both Python and Common Lisp, neither version looks any better than the other to me. Also, as another commenter notes, the snippets are not actually good translations of each other. Your CL snippet would look like this in Python: list(map(str.tolower, ("Hello", "world!"))) While your Python snippet would look like this in CL (as pavelludiq notes): (loop for word in '("Hello" "world!") collect (string-downcase word)) Granted, Lisps tend to be a bit more verbose (longer names, less symbols used), which is a natural consequence of having little syntax. It has serious advantages when learning the language or when reading unfamiliar code, although it comes with some drawbacks, too.
- svetlyak40wt 8y agoActually, lisp varian can be also a: (mapcar #'string-downcase '("Hello" "world!"))
- vram22 8y agoIs there any official (other than any ANSI standard site) or quasi-official or unofficial main site for Lisp or Common Lisp? I had seen a couple of other sites which seemed like they might be that earlier, like https://common-lisp.net/ https://common-lisp.net/ and the site of the Association of Lisp Users, which I vaguely remember as being at http://alu.org http://alu.org , but now a Google search shows some other sites instead (from the first few hits I looked at). And now there is this one mentioned in the OP. I looked at its About page, http://lisp-lang.org/about/ http://lisp-lang.org/about/ , but it does not seem to show any such info. Update: I saw this on the common-lisp.net site: "This site is one among many gateways to Common Lisp." which seems to indicate that there was/is no single "(un)official" one.
- pavelludiq 8y agoWhere is C's (un)official home page?
- djhaskin987 8y agoAny good implementations if common lisp on Windows?
- dstrohmaier 8y agoI use portacle with SBCL on Windows: https://portacle.github.io/ https://portacle.github.io/ Generally SBCL appears a good implementation.
- mathnode 8y agoI use sbcl and chezscheme on windows 10. My editor of choice is Sublime Text with the SublimeRepl and Parinfer plugins.
- orthecreedence 8y agoClozure CL (https://ccl.clozure.com/ https://ccl.clozure.com/) is the counterpart to SBCL on Windows. I never had much luck with SBCL on Windows (granted, I haven't tried in about two years) but Clozure CL always worked fantastically (including threading, FFI, etc).
- flavio81 8y ago>Any good implementations if common lisp on Windows? SBCL works OK on windows, i've used it a lot there. CCL works perfectly. ABCL should work just fine. CLISP works perfectly. LispWorks and Allegro CL should work perfectly.
- agentultra 8y agoNice site! I bought cdr.io years ago when I was seriously into Lisp. If anyone has an idea for it, happy to pass it along.
- gibsonf1 8y agoI highly recommend Eitaro Fukamachi's caveman2 for very quickly setting up a very fast lisp web server including very easy to configure ssl. Fukamachi's Dexador library is also fantastic for very quick and easy ssl http functionality. https://github.com/fukamachi/caveman https://github.com/fukamachi/caveman https://github.com/fukamachi/dexador https://github.com/fukamachi/dexador
- ungzd 8y agoIs main page created with Powerpoint? /learn/ is good (better than nothing or than ancient PDFs) but no real documentation yet.
- nerpderp83 8y agoThis is not good, the info density for the screen area is too low. This could have been one maybe two screens worth. Is this the credits to Friends? Am I consuming Lisp Content while chillin in my penthouse on my 20k couch using a gold plated IPad X Tablet? Millennials are Killing Common Lisp. one page, https://www.rust-lang.org/en-US/ https://www.rust-lang.org/en-US/
- taeric 8y agoI can see how it can be annoying to have to scroll to see everything. That said, I also find the page somewhat pretty. I suspect preconceptions of the language going into the page make a big difference. Which is not to criticize the Rust page. It is also nice, just different. I will offer that proclaiming that Millenials are Killing Common Lisp is probably more effective at alienating potential users than a redesigned home page. :(
- steveklabnik 8y agoWe are also in the process of redesigning our home page, (and the website generally) due to its flaws.
- AceJohnny2 8y agoCounterpoint: I think the Common Lisp page does a good job giving good examples of interesting features, leaving me curious for more. The web benchmark is intriguing [1], and i'm really happy they gave an example of a good IDE, which so many language presentations completely overlook. The tooling is what I, as a developer, will interact with daily! I don't care if you language can do fizzwabble if I can't make heads or tails of it! The Rust page, on the other hand, only effectively demonstrates one feature, which i don't care about. Unicode strings? Woo. Those belong in separate i18n file. It does so in a box that doesn't even properly display the whole snippet without scrolling. It is cool that I'm able to run it, though of course a newbie like me wouldn't know what to do. Its list of features should be links to examples. As is, the bullet points could have been extracted from a powerpoint presentation and are just as mind-numbing. [1] though I want a link to more information, for example which servers they chose for Ruby and Node. Were those best-in-class for their language? I'm very suspicious of benchmarks given with little context.
- joncp 8y agoWhat's with the full-page splash that just says "Common Lisp" with no indication that you need to scroll to get to the content. This is worse than the 1990's "Click here to enter the site" silliness.
- city41 8y agoI think this trend really took off with Medium, which encourages large (and useless) banner images at the top of articles. It's an unfortunate trend. It probably also increases bounce rate if I had to guess.
- AceJohnny2 8y agoI agree. A small change to show something peeking from the bottom to indicate there's more would go a long way. I liked Windows Phone's way of having stuff from the next "page" peek from the side/bottom to hint that there's more to scroll to.
- greymeister 8y agoThe giant header that fills the first page, forcing a scroll into content, is right up there with unskippable flash intro videos from 10 years ago.
- giancarlostoro 8y agoI'm not sure why this is even a thing, even on news articles with huge images, it's just POINTLESS to me. "Oh I guess you don't want me to read this article" click
- WindowsFon4life 8y agoFluff.:O
- minieggs 8y agoGreat to see a pretty Lisp site up. Loving it.
- ktosobcy 8y agoWhy the "Fast" section (or graphs on https://github.com/fukamachi/woo https://github.com/fukamachi/woo) don't contain any JVM based solutions? Anyone has idea how do they compare?
- ssijak 8y agoAny advantage to learning Lisp instead of something like Elixir today? I find Elixir to be modern, a large amount of libraries, larger and active community, BEAM VM, has macros also... Can`t think of a reason to invest time in Lisp at the cost of mastering something Elixir, but maybe I am wrong.
- deathtrader666 8y agoI'm in the same boat as you.
- hajile 8y agoYou can have your cake and eat it too http://joxa.org/ http://joxa.org/ http://lfe.io/ http://lfe.io/
- hajile 8y agoWhy not do both? http://joxa.org/ http://joxa.org/ http://lfe.io/ http://lfe.io/
- kunabi 8y agoAt the request of John McCarthy, Lisp’s creator, no single language that is a member of the Lisp family is to be intended to be the definitive dialect; that is, none is to be called just “LISP.” So much innovation has happened since the CLHS that to put up a fluff site feels like an effort of "resurrection". When in reality the Lisp family has continued to evolve since then. To limit yourself to just CL, as I did, for a long time, results a bit of a 'losing my religion'. You'll be confounded by things long since solved, and in the end perhaps write all of "Lisp" off. Do yourself a favor and keep and open mind to the family, and not one common incarnation that predates some developers.
- drmeister 8y ago"Fluff" "FLUFF"??? If that's fluff then most of the rest of the web is fluff... oh wait. Seriously, the web site is a very informative site about "Common Lisp" - a specific dialect of Lisp. It's right there when you click the link, big letters - "Common Lisp" - you can't miss it. You could argue about the URL "lisp-lang.org" - but why?
- WindowsFon4life 8y ago"We are in the process of decoding the original format used for the CLHS." This is a smell that highlights the above post it seems.
- drmeister 8y agoIt's more of an issue at the interface of technology and licensing. The CLHS (Common Lisp Hyper Specification) is a very large, web based document written in the 80's and it looks like an old Geocities web site. I believe the CLHS license says that it's not allowed to be changed (to protect the standard - I believe - someone correct me please) and so the community is working from slightly older drafts and figuring out how to automate the conversion to something that looks more modern. It's not a problem with Common Lisp - it's a problem that HTML, the web and user expectations have been changing over the years. There's that permanence thing again.
- arf 8y agoIs there a way to find well-maintained non-broken preferably-actively-maintained libraries or those that the community considers to be the de facto solution? Like where would I start with doing data science or web dev (and related subjects like encryption and auth etc) or things like async or parallel programming?