[HN Gopher] Scheme Reports at Fifty
___________________________________________________________________
Scheme Reports at Fifty
Author : djwatson24
Score : 43 points
Date : 2025-10-19 14:45 UTC (8 hours ago)
(HTM) web link (crumbles.blog)
(TXT) w3m dump (crumbles.blog)
| tonetheman wrote:
| I wish I saw what these guys do in scheme. I only barely know
| what is happening and it seems interesting.
|
| The parens are so hard for me to follow and always have. I have
| yet to find an editor that fixes that. Perhaps I did not try
| enough or am not smart enough to acutally use the editors
| correctly.
|
| Anyway interesting read I think
| hellcow wrote:
| paredit on vim is great.
|
| Working through all the exercises in "The Little Schemer" was a
| huge help for me when getting started. You start with a few
| primitives and build up all common tools from those with
| recursion, like how to build an addition function using just
| `add1` as an early example from the book.
| fleahunter wrote:
| Interesting point about the difficulty of parsing all those
| parentheses! I remember getting pretty frustrated with it
| when I first picked up Scheme. It felt like trying to read a
| book written in a strange code. But then I stumbled onto
| paredit in Emacs--it totally transformed the way I interacted
| with the code. The structured editing made it feel more like
| composing music than wrestling with syntax.
|
| And you're right--working through "The Little Schemer" was a
| game-changer for me too. There's something about gradually
| building up to complex concepts that really clicks, right? I
| wonder if there could be a way to create more beginner-
| friendly editors that visually guide you through the syntax
| while you code. Or even some sort of interactive tutorial
| embedded in the editor that helps by showing expected
| patterns in real-time.
|
| The tension between users wanting features and implementers
| wanting simplicity is so prevalent in so many languages,
| isn't it? Makes me think about how important community
| feedback is in shaping a language's evolution. What do you
| all think would be a good compromise for Scheme--more
| features or a leaner report?
| neilv wrote:
| C-like syntax: foo(1, 2, 3); if
| (x) { aaa(); } else { bbb();
| }
|
| Lisp-like syntax: (foo 1 2 3)
| (if x (aaa) (bbb))
|
| Syntax is easy. Practical semantics is a little bit harder, but
| it's not hard.
|
| Editor-wise, you want an editor that does automatic indenting
| and some kind of matching parentheses highlighting. Emacs is
| one. (Once you've learned the language, you can use a fancy
| structural editor, but maybe don't confuse yourself with too
| many new things at once.)
| mhitza wrote:
| For vim/neovim users out there, here's my setup https://gist.
| github.com/mhitza/a00d7900571e9f13bac2bbf4a203d...
|
| Not quite structural editing, minor annoyances, but pretty
| decent.
| bitwize wrote:
| The "such parens, much overwhelm, so confuse" attitude of non-
| Lispers always baffled me. Especially since when working in
| C-syntax languages, I'm cautious enough to enforce an explicit
| order of operations (to avoid confusion that can lead to
| errors) that I put nearly as many parens in my C or Java code
| as I do in my Lisp code. What's a few more pairs of round
| brackets among friends, eh?
|
| Emacs was purpose-built for working in Lisp. Out-of-the-box it
| really helps with paren-matching by highlighting the matched
| bracket (of any type) when you cursor over a bracket (also
| works by highlighting the open when you type the close) and
| providing commands for traversing and selecting whole sexps.
| Those alone, combined with its smart indentation, will get you
| pretty far. Add something like Paredit or Parinfer if you want
| even more assistance with sexp manipulation.
| agumonkey wrote:
| I had a talk with someone very much allergic to lisp (a
| college trauma for him iirc). For people like him, extra
| distinction through syntax is a mental benefit while I assume
| lisp fans need the opposite, removing 90% of syntax makes
| things easier (sexps and fp composability being key too)
| spit2wind wrote:
| This is a good starter. Technically, it's Lisp and not Scheme,
| but once you understand one, you get the other. The benefit of
| Emacs Lisp is you can immediately play with it by modifying
| Emacs to meet your needs.
|
| https://www.gnu.org/software/emacs/manual/eintr.html
| pklausler wrote:
| I wish so badly that there were a statically typed, pure, and
| lazy Scheme.
| Chinjut wrote:
| What would distinguish this from existing statically typed,
| pure, and lazy functional languages such as Haskell?
| maplant wrote:
| sexpression based hygienic macros
| anonnon wrote:
| > lazy
|
| Why? What are the advantages, in practice, of lazy evaluation
| as the default?
| endgame wrote:
| If you have immutable data and want code reuse, you need
| laziness otherwise you give up a lot of performance. In
| Haskell, a careful choice of implementation for `sort` means
| that `take 10 (sort someList)` will only do enough work to
| return the first ten elements.
|
| Having laziness by default means that functions compose
| properly by default; you don't have to worry about libraries
| providing an interface to your chosen incremental streaming
| library or whatever. I've seen friends working in strict
| dialects of Haskell forced to write out each combination of
| list functions by hand because otherwise they'd have to
| materialise large intermediate data structures where regular
| lazy Haskell simply wouldn't.
|
| Ed Kmett has a couple of great posts about the value he's
| realised from laziness:
|
| https://www.reddit.com/r/haskell/comments/l98v73/can_you_sha.
| ..
|
| https://www.reddit.com/r/haskell/comments/5xge0v/today_i_use.
| ..
| nrds wrote:
| What works for Kmett most often does not work for mere
| mortals.
|
| As for your first point, I think it's self-defeating: You
| claim "you don't have to worry about libraries providing an
| interface to your chosen incremental streaming library",
| but this requires "a careful choice of implementation" in
| those libraries with your chosen incremental streaming
| semantics in mind, which is the same thing but less
| explicit! And as long as mere mortals can't figure out the
| magic implementation of `sort` which makes incremental
| streaming work without explicit bindings, then what's the
| point?
|
| Haskell is a great language for consuming libraries written
| by Ed Kmett, as your link demonstrates. Otherwise, it's
| difficult to work with.
| deadthrowtrash wrote:
| 3/4 for Shen. It's a Lisp-2 but typed, pure and lazy.
| michaelcampbell wrote:
| Tangent, but wow did I find the typography and font-face on that
| blog post pleasant to read.
___________________________________________________________________
(page generated 2025-10-19 23:00 UTC)