(Replying to PARENT post)
The problem is after the tutorial is done, all the libraries (look (like (this))) and the language is so powerful it is difficult to know if this 10kb contains a life-changing insight into the nature of programming or a half-hearted implementation of half of something that was a bad idea to start with. Knowing the syntax and technical semantics of the language doesn't help with that.
The topic has been done to death, but the lisps seem to have a social organisation problem that the community never quite managed to get a grip on.
(Replying to PARENT post)
If youโre unfamiliar with Common Lisp, itโs important to understand that itโs a multi-paradigm language. The presence of closures, key functions in the standard library, and the syntax often push you naturally to a functional solution. But you shouldnโt feel bad about writing a LOOP that mutates a bunch of state under the hood. This isnโt scheme!
(Replying to PARENT post)
Till now when I hack on something I use Steel Bank Common Lisp.
Only for the most basic of web apps do I switch to Rails.
These set of tutorials are excellent. Thanks for sharing.
(Replying to PARENT post)
I wish there was something similar for scheme. Most scheme books focus on teaching you compsci with the language and not on teaching you how to build practical things with it.
It's quite hard to onboard someone to a scheme codebase, despite scheme's reputation of being a simple language.
(Replying to PARENT post)
https://github.com/hylang/hy/releases/tag/1.0a4
That's Lisp over Python -- you can do data science properly in Lisp now using all you favourite Python packages.
I repeat you can do data science properly in Lisp now.
(Replying to PARENT post)
Itโs really impressive work. I guess itโs a reimplementation of a framework he wrote in ADA years ago, so itโs really well developed and thought through.
(Replying to PARENT post)
The macros are orthogonal to this. Macros are really just an example of a more general thing: features that are used to effectively implement parts of the language definition are often lifted up and also made available to users. This effectively allows the language to be extended in a way that very closely resembles the language's built-ins. (This is not always the case; lifting more such things would be a good avenue for extending Lisps.)
(Replying to PARENT post)
(Replying to PARENT post)
`the value-type form) => result*`
Looking at its use, you might think it lets you declare types of things for type-checking purposes. i.e.
(the integer (operate-on 1))
... would make the program assert-fail if (operate-on 1) were somehow not an integer.
The real story is it can do that, but the spec actually says behavior is undefined if the value is not the specified type. So check-failing is one of the many things it's allowed to do.
In practice, depending on your compiler settings, `the` can act like asserts or it can act like places the compiler's allowed to paint racing-stripes on your code to make it go faster by skipping dynamic type checks and letting data structures mangle up if the types are wrong. ;)*
(Replying to PARENT post)
(compress (reverse (explode 'ABC)))
==> 'CBA
I tried to google it, but I only found some shit I have written myself. First thing I did with my very own Symbolics-machine, was to implement explode & compress, because I did not want study those marvelous string-manipulating possibilities it may have.Compress & Explode manipulate of list of numbers, of course. In my latest Brain-Fart production I think have finally solved all problems. List of numbers, whose first number is 34 aka \" , is printed as "string" in ppretty-printer and editor. No need to implement strings *EVER*.
(Replying to PARENT post)
(Replying to PARENT post)
(Replying to PARENT post)
(Replying to PARENT post)
So If primarily Linux user (sysadmin/devops/ occasional embedder programmer), wanted to learn lispy like language, that is useful which one would you pick?
Emacs one? some common lisp or scheme ?
(Replying to PARENT post)
(Replying to PARENT post)
One nitpick: the Google Docs code does not display favourably on mobile. It might help to publish in HTML if you're interested in targeting those readers.
(Replying to PARENT post)
(Replying to PARENT post)
(Replying to PARENT post)
can you please talk to us like programmers? your audience is programmers.
(Replying to PARENT post)
- the idea that almost all language constructs are user-implementable with macros is quite impressive (but I donโt buy the argument that โrealโ macros are only able in s-exprs)
- and the REPL-driven development model was a really beautiful and seamless experience.
Butโฆ every time I try to use it on some code, I find too many warts and inconsistencies that I just didnโt want to spend too much effort in making it work. Itโs a beautiful language in itโs own ways, but the other parts are too ugly (to me, of course).
Iโm fine with it being a lisp or not; I just want a clean language with macros baked in (and becomes the basis of most language features), and with a REPL-driven development model as a first class citizen (with interactive restarts and all).
Unfortunately it seems a pipe dreamโฆ so Iโm stuck here.
[0]: https://mikelevins.github.io/posts/2020-12-18-repl-driven/