Earlier quoted context omitted.
That sounds like a horrible way of learning Emacs, but fair enough. I don't think you need to know elisp as a prerequisite but personally I learnt enough of it to be able to get by without Customize. You might want to read Zed's EULA.
The GP is right to be offended by what you said, because his way of learning Emacs was an extremely typical one for decades. Remember that such informative and inspirational resources like Mastering Emacs didn't exist until the 2010s. I myself got into Emacs around the turn of the millennium because I wanted a free IDE for my programming-language classes at uni, and also I wanted to use Gnus which was such a capable…
I keep bouncing off the Scheme language
71–80 of 91 posts
Re: I keep bouncing off the Scheme language
#72Strange that the post makes no mention of the Little Schemer series, because teaching you to "think Scheme" is exactly what those books do. Some people are put off by the weird style (combination of children's book visuals and socratic logic problem presentation), but they work!
A few chapters in I belly laughed when it dawned on me that it's going to be recursion until the cows come home. The authors insistence on working through the steps is endearing and comical. Great book to come back to every once in a while.
Re: I keep bouncing off the Scheme language
#73You may like Rhombus, all the power of Racket in a Python-like syntax Official docs: https://docs.racket-lang.org/rhombus/index.html Collection of small examples: https://github.com/racket/rhombus/blob/master/demo.rhm
Re: I keep bouncing off the Scheme language
#74Earlier quoted context omitted.
> types don’t have their core functions associated with them concretely. They do in Racket? You look at the "List" documentation and you find all of the functions for lists. Likewise with hash tables, numbers, strings, sequences, files, etc. > The only way to know strcat, puts, and strlen exist is… ... to look at the documentation on docs.racket-lang.org. The powerful search includes results not only for the standard…
As far as I know, Racket docs are entirely human-generated. The functions aren’t tied concretely together to types by anything. In C#, types and their member functions are automatically tied and inspectable in code. That’s what I feel is missing. Also, I don’t want to take away from the phenomenal Racket docs. They’re a real treat to work with.
Also, doesn't inheritance interfere a bit with your "functions aren't tied concretely together to types" observation? You can examine a source file for ArrayList, but if it extends List, you may not see everything you expect to see, and would just defer to the docs to help you out (or click through more source files).
I assume Racket contracts can handle your concern about relating functions and types. An IDE or static analysis tool can help you find all of the functions that operate on a `dict` type if you don't want to rely on conventions where you just seek out a dict.rkt file.
For what it's worth, coming from lots of Java experience, as a Racket novice, I poked around the Racket internals and added Candlesticks to its `plot` library [0] and removed a call to a deprecated gdk function that was causing overhead when drawing text [1]. It never felt like an insurmountable task just because methods aren't defined within types.
By finding problems with Lisp, you are finding problems with s-expressions, which, to me, are so plainly superior to XML and JSON for defining data that I wish more languages would at least consider adopting them for data definitions.
[0] https://github.com/racket/plot/commit/7f38feaf6e28a1decec93d...
Re: I keep bouncing off the Scheme language
#75There's something very ironic about an article about bouncing off Scheme on a website called 'SICPers'. OT: I think I'm pretty decent at thinking in Scheme, although I don't quite have the hang of continuations. That said, because I like type declarations I use Common Lisp, which allows me to bounce between a more Scheme-like style and a more Assembly-like style however I see fit.
What do you mean by "Assembly-like style"?
Re: I keep bouncing off the Scheme language
#76I went back and forth with ChatGPT on this a while ago. I concluded that my main problem with Lisps (and C) is that types don’t have their core functions associated with them concretely. The only way to know strcat, puts, and strlen exist is…to know that they exist. This vexed me. We lightly mapped out the idea of having traits for types in lisp and then having those traits and their associations frozen at compile ti…
Yes, and the only way to know that Vector and Hashtable exist is... to know that they exist.
> I also wanted compile-time attributes à la Rust/C# and there’s no clean way to add those to Lisp’s syntax without seriously cluttering it up
That's what declarations are for, a Lisp could have something like:
(declare (type Foo bar)
(derive Clone bar))
(define bar
(bar:from-string "Hello, World!"))
Or something like: (db:with-connection (con (db:get-connection my-database))
(declare (db:read-only con))
(db:query con
:table "students"
:where (> "score" 80)
:sort-by "name"))
> Lisp is neat but it just doesn’t fit in the future of programming that Rust and C# have shown us.C♯ and Rust are dead languages, you make a change and you have to recompile the entire program and restart it from scratch. You can't ask a running program things like 'how many users are connected at the moment?'. That isn't a future I would like to see.
Re: I keep bouncing off the Scheme language
#77Earlier quoted context omitted.
The GP is right to be offended by what you said, because his way of learning Emacs was an extremely typical one for decades. Remember that such informative and inspirational resources like Mastering Emacs didn't exist until the 2010s. I myself got into Emacs around the turn of the millennium because I wanted a free IDE for my programming-language classes at uni, and also I wanted to use Gnus which was such a capable…
You got the ELisp intro right in the help section since forever.
Re: I keep bouncing off the Scheme language
#78Earlier quoted context omitted.
How did you arrive at C++ and Python? Yes I'm aware they have many structural and aesthetic differences, but why would you not choose a language with a different paradigm—functional, logical, even procedural, etc?
Relatedly, I've noticed the strange infatuation that a lot of C++ programmers have with Python specifically. I have no idea why that is.
Re: I keep bouncing off the Scheme language
#79Earlier quoted context omitted.
You got the ELisp intro right in the help section since forever.
Of course, but not everyone has a reason to look at it in the beginning. As I said, I only became interested in hacking Elisp once I had been using Emacs for a long while (years) and eventually ran into cases where I wanted to change default behaviour. Meanwhile, all my hacking energy was going to other languages for which I just used Emacs as the IDE with the supplied major modes.
Re: I keep bouncing off the Scheme language
#80Earlier quoted context omitted.
Oh, kinda like how I learned Emacs: use it "wrong" for years, treating it as a sort of weird archaic Notepad++, then gradually discover features, master the keybindings, and learn to program Emacs Lisp over time until my proficiency, and the utility the editor provided to me, grew. these days i'm seriously considering switching to zed tho
That sounds like a horrible way of learning Emacs, but fair enough. I don't think you need to know elisp as a prerequisite but personally I learnt enough of it to be able to get by without Customize. You might want to read Zed's EULA.