I keep bouncing off the Scheme language
51 points by ingve 3 days ago | 14 comments

senkora 15 minutes ago
I think that it helps a lot to have a daily practice of using a language for small things.

In much that same way that many people do the daily wordle or crossword, I do the daily leetcode.

I flip a coin and solve it first in either C++ or Python, then re-write my solution in the other one.

Usually it takes me around 20 minutes to solve it in either language, and 5 minutes to re-solve it in either language.

Recently I decided to start learning emacs lisp. This is an imperative lisp dialect that’s pretty different from scheme, but I think that the particular language doesn’t matter much for this process. I could a bit biased because I do have prior experience with SML and scheme.

I started re-solving the problems a third time in emacs lisp. And I’m still learning but I’ve felt my comfort with the language increase over time, and I expect that if I continue doing this then I will eventually reach parity with C++ and Python.

Currently it takes me about 20 minutes to re-solve a problem in emacs lisp, because I usually have to read documentation and/or look up something new.

reply
tmtvl 16 minutes ago
There'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.
reply
gus_massa 2 days ago
You 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

reply
twoodfin 41 minutes ago
Scheme was invented as a consequence of Sussman & Steele’s discovery that lexical closures in the lambda calculus had essentially an identical implementation to a fully elaborated version of Hewitt’s actor model.

I do wonder what a language with the same “taste” and minimalism as Scheme but embracing the actor model would look like. Erlang?

Even better if someone could figure out how to harmonize them in the same language: “There are exactly two ways to do it, and they’re interchangeable.”

reply
mepian 32 minutes ago
> I do wonder what a language with the same “taste” and minimalism as Scheme but embracing the actor model would look like.

There is Spritely Goblins: https://spritely.institute/goblins/

reply
twoodfin 20 minutes ago
A 98-page PDF on language design for distributed objects in a capability security model? Made my day, thanks!
reply
iainctduncan 19 minutes ago
Strange 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!
reply
kayo_20211030 37 minutes ago
I understand the challenge, but is Graham (OP?) getting too caught up in how the code ought to look, rather that what it ought to do. I don't think it matters much initially how a piece of work looks as long as it does what's intended. Afterwards it does; particularly if you need to involve other developers, and to them, the idioms looks "strange". I'm not convinced that there's an ALGOL neurotype that's distinct from a LISP(?) neurotype. I think it's a bit of a spectrum like everything else.
reply
varjag 40 minutes ago
I think it's the symptom of inadequate practice rather than some "language neurotype". Consider writing (yeah 2026 I know) a substantial project in Scheme from scratch.
reply
Pay08 37 minutes ago
Two websites don't sound like insubstanial projects.
reply
leecommamichael 13 minutes ago
Do what works for you.
reply
Pay08 38 minutes ago
I was the same way (and still am somewhat, I can't get hygenic macros into my head) but due to the differences between Scheme and Common Lisp. What helped me was writing imperative code that Scheme people would surely scoff at, and gradually using more and more Scheme features as I kept writing. Then I refactored the whole codebase to look like the final few hundred lines.
reply
veltas 48 minutes ago
Is it possible you're too stupid to write scheme? Because that's where I think I am, I've also tried and failed to write it a few times.
reply
jfengel 32 minutes ago
Programming languages, like natural languages, are tools for human beings, not computers. They work around the strengths and weaknesses of a human brain.

It's not a question of being smart or stupid. It's whether the tool fits the task it's applied to and the affordances it gives the user.

Scheme is intended more as a teaching tool than an actual language. Its simplicity is perfect for reasoning about programs. It's less well suited to practical tasks.

About the only really difficult lesson of Scheme is if you use it as a purely declarative language. Imperative features are a natural affordance of the human brain. Working with them is beautiful and alien.

reply
Smalltalker-80 15 minutes ago
[dead]
reply