thephoeron / llthw Goto Github PK
View Code? Open in Web Editor NEWLearn Lisp The Hard Way source-code and full book text
License: MIT License
Learn Lisp The Hard Way source-code and full book text
License: MIT License
When I visit http://learnlispthehardway.org/, I get a 504 gateway error, even though pinging the server succeeds.
Does Lisp have a library or is suitable to handle Chemistry and advanced Chemistry as Fortran is?
I know a young boy who just got into Chemistry in an University. And I thought of introducing him in programming through Lisp....
Although I am also a Lisp learner.
Also: Some links are broken...
Is thephoeron alive? Seems that he has given up the project...
There appears to be an issue with the jQuery code which loads the reference entry content into the modal, where it reloads all the scripts as well as the content several hundred times in some cases before successfully loading the content into the DOM.
This is affecting the performance of the web front-end, and skewing google analytics results.
I'm a fairly new Lisp hacker but I want to write notes as I learn and possibly turn them into parts of this book along the way as I research various topics for everyone's profit.
Where do I begin contributing to this though? LLTHW's webpage marks almost all chapters as pending review or incomplete. I'd also like some pointers from someone who's already working on the book so we don't duplicate each other's effort or otherwise miss each other's ideas and thoughts.
I'm thinking the format for every exercise should evolve to meet the following template:
The links from this section do not have .md on the end... Not a big problem but it would still be good to fix it.
(In case it's needed, I am using Chrome on Android lollipop.)
I am an absolute newbie to Git... Can I edit the links or does LispTO have to?
Considering this is already written in markdown. It wouldn't be hard to format it for gitbook and use that as a distribution method (not necessarily replacing the current method).
This is not a complaint, merely a suggestion.
Duplicate of #43 that was closed by its author.
While it uses Clozure instead of SBCL, Lispbox is the easiest way to set up CL on a computer.
http://common-lisp.net/project/lispbox/
In exercise 1.2.3 the link (under ORACC
) for the cuneiform fonts is broken. I see a white blank page.
See https://github.com/LispTO/llthw/blob/cdb30b408b2fb8f9d379837d81a32d9587a8d4db/book/1-02-03-unicode.md.
Maybe as an alternative link could go to wikipedia which contains a link to some cuneiform font packages, but this is a guess http://en.wikipedia.org/wiki/Cuneiform_%28Unicode_block%29#Font_packages.
Hi,
This is probably not the right place to talk about it, but I couldn't find any better.
Since some days (maybe weeks), the llthw website is not accessible and returns a 502 Bad Gateway error. What is happening? Is there a new URL?
Best regards,
stoempsaucisse
Ostensibly, this is a book for learning lisp through examples, exploration, and experiments - i.e. the hard way.
I did lpthw and it was very effective. This is NOT effective. I'm incredibly frustrated with the writer's tendency to assume the reader is tracking 100%. That every time a concept is mentioned - even without an example - it will just stick. After wading through the earlier and debilitatingly long chapters I had thought it would get better.
Maybe this will one day be a great resource for learning lisp. For now, I am going to other resources.
A friendly word to the author: thank you for taking the time to write this to the degree you already have. Please, if you choose to continue this project do these three things to improve your pedagogical approach:
Why on someone's first exposure to streams in Lisp would you subject them to this complex, inscrutable, impractical atrocity? Oh yeah, you tell us: because we can. This is not the time to show off your clever lisp convolutions, nor your shitty moon puns.
At this point you haven't introduced anything about the difference make-string-input-stream and with-input-from-string, much less the make-two-way-stream, nor demonstrated any of them in isolated uses. You just throw them all together at once and tell us to swim. I understand that I can go try it myself, but then I could just go and read the documentation and do that anyway, the purpose of this is to learn - supposedly.
Teaching is not the time to be smart, it's the time to simplify so that your student can feel smart.
One final, unrequested feedback: Please think about the progression of topics. Make the development of these topics have some sort of logical progression. It currently feels like: here's another thing you might want to possibly know about a programming language in no particular order.
Alphabetical order is for documentation, motivated order is for education.
/rant
To lower the barrier for entry into the Common Lisp ecosystem, consider including CL21 in the text of L(λ)THW from the beginning.
Considerations:
While performance of the web app appears to be snappy and responsive, no issues with serving static or dynamic content over ajax or standard requests at the moment, it is currently using far more memory than ideal, in some cases over 500mb.
This could lead to performance issues under heavy load, potentially exhausting the stack or having the app automatically terminated if it exceeds memory limits of the hosting account.
Various strategies for improving performance and limiting memory usage need to be investigated and implemented.
To extend the discussion of documentation and literate programming from Part Two, it would be ideal to include a new chapter early in Part Three focused on Typesetting with Common Lisp, to either leverage or fully replace the LaTeX stack.
Marc Battyani's CL-PDF + CL-Typesetting libraries are ideal candidates for discussion. A discussion on multiple output formats from single-source text, using CL-Docutils, CL-Markdown, and 3bmd will also be useful.
This chapter will be essential for typesetting Quantum Circuit Diagrams automatically from Lisp source for chapter 3.14, for feature-parity with Quipper and visualization purposes.
Extend the exercises on Packages to include an enlightening factoid from The Complete Idiot's Guide to Common Lisp Packages by Erann Gat:
"The most important thing to understand about packages is that they are fundamentally a part of the Lisp reader and not the evaluator."
This is essential to the understanding of macroexpansion across package namespaces, as pointed out by Doug Hoyte in regards to anaphoric macros; thus the namespaces and packages chapter should potentially appear before the new chapters in part one for Macros and Reader Macros, per issue #15.
Working though the book and trying the princ example on the try-lisp page:
CL-USER> (princ "Hello, from Lisp!")
ERROR: Function `PRINC' is undefined.
The last example in Exercise 1.1.5 that interacts with the new package that was just created gives two errors:
one
has not been definednewpack
not new-pack
Chapter 1.10, Functions and Macros, would also be better if it was split into two, so that more detail can be provided on both functions and macros, especially macro-expansion and timing of the expansions. Very little emphasis is currently given on reader macros, and that seems to be a pretty important subject that shouldn't be glossed over.
The user experience for LLTHW could be vastly improved with an asynchronous web application; currently the application runs on Hunchentoot—a thread-per-request server—which is inherently greedy in terms of system resources. While useful for web applications that need to validate and process arbitrary user data in an isolated environment, LLTHW only needs to serve up content. An asynchronous web application will thus be able to maximize available system resources and provide a faster, stabler experience for all users even under the heaviest traffic spikes (such as the Hacker News fiasco this past July), and buffer against DDoS attacks.
This will also allow for a more sensible use of 3bmd to provide live-updated content, without specifically re-parsing each Markdown document for each user on request; only one copy of each parsed Markdown document needs to live in memory, which can be accessed sanely by all clients. As such this ties in with issue #3 to reduce application memory usage.
The most mature Common Lisp asynchronous server and web application framework appears to be Wookie. It is still in Beta, but it seems to be worthy of production use-cases, such as the official Wookie documentation, and the Turtl platform.
Alternative suggestions are welcome.
Since it is out of keeping with Zed Shaw's LxTHW style, and seems to break the format, chapter 1.1 should be deprecated and the contents migrated to their appropriate exercises.
Add the Font Awesome lib to LLTHW web app for better iconography over Glyphicons.
I don't know if it is a problem with jscl or something on your end, but loop is completely broken. Something as simple as:
(loop for i from 1 to 10 collect i)
gives "ERROR: Variable `FOR' is unbound."
The MathJax CDN used in your "Try lisp" page is no longer working per:
https://www.mathjax.org/cdn-shutting-down/
There are alternative CDN links in the above article that can be used. I tried cloning this repo and updating the link with the intention of creating a pull request with a fix but couldn't get llthw to run locally - sorry.
Hi,
When doing the example for 1-01-02-more-detail.md on line 246, instead of getting the value of 2.0 (float) i got a value of 2 (integer).Using sbcl 1.3.15.
(defvar one 1.0)
ONE
one
1.0
(defun mad-adder (one)
(declare (special one))
(let ((one 1))
(+ one (locally (declare (special one)) one))))
MAD-ADDER
(mad-adder one)
2
(+ one one)
2.0
I cannot proceed past level 1: "Let's do a little math"
I click "Next" but nothing happens. I entered in every line and then clicked "Next"
Not to teach bad habits to the reader, I'd like to suggest to build the example lists in exercise 1.1.3 using LIST instead of QUOTE. Maybe additionally use elements that are self-evaluating to avoid having to write too many quotes, so
(defvar test-list-a (list 1 2 3))
I don't know whether it's didactically better to change the way how test-list-b is constructed, too.
The mentioned link to Zed Shaws essay is broken: http://zedshaw.com/essays/programmer_stats.html
Maybe this is the right link: http://zedshaw.com/archive/programmers-need-to-learn-statistics-or-i-will-kill-them-all/ ?
Mon Aug 6 09:18:27 BST 2018
The Let's Encrypt
certificate has expired:
Expired: Sunday, 22 July 2018 at 19:21:20 British Summer Time
Regards,
While using "Try Lisp", I can't go beyond "Let's do a little math". When I press Next button, I see that AJAX request fires (request is sent to /math) and the content retrieved is the same. Tested in Firefox, Chrome and Safari on OS X
Chapter 2.3, Objects and Control Flow is too large and unfocused. It would be better to split the control flow exercises out to their own chapter, and the Struct exercises to another, allowing a full chapter entirely focused on CLOS. Chapters on Control Flow and Structs might fit better in Part One.
The single exercise on the Meta-Object Protocol is also deficient; it should serve merely as an introduction to the subject, with an extra credit chapter following immediately after to present MOP in full.
Running (/ 9 0) in the online REPL crashes the webpage in Chrome on OSX.
It would be useful for reference to display the file-write-date
timestamp at the top of all chapter and exercise pages, so visitors can quickly see if the text has been modified recently on a per-page basis. file-write-date
returns a universal timestamp, so it will have to be formatted as a timestring with the local-time
package.
Hi and thanks for this great material.
I was wondering if the rest material of the book is gonna be uploaded?
Per commit 293b267, the Parenscript-generated jQuery DOM transformations in the script module do not appear to be having any effect.
Find out what's blocking the header elements from being found and manipulated.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.