Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I think SICP and Scheme go together like horse and carriage, and neither Python, JavaScript or other "real world" languages should taint the insight gained from that wonderful pairing.

Because Scheme - being a LISP - has the same syntax for code and data, metalinguistic abstraction is facilitated. Nobody should have to read through boilerplate code to dig up the core message of SICP.

I took the Algorithmics I course based on SICP/Scheme in 1993 at the University of Erlangen, and although I never used Scheme or CommonLISP in production, it made me a better programmer regardless in what language. Thanks to Abelson and Sussman!



I think SICP would be just peachy in Elixir, but I’m coming around to the notion that keeping functional programming for functional programmers is a form of professional neglect.

Functional core, imperative wrapper is one of the few sane ways to build a large (Conway’s Law afflicted) system, and too many of my peers never studies SICP in school. They don’t even know the damage they do, and as we’ve learned in many, many other circles, vilifying people does not get them to change. It’s a tool of last resort, and most often used to publicly label someone for ostracism, not help.

So excuse me, but y’all are crazy. We need SICP for JavaScript developers more than we need SICP for every functional language in the world, combined. And JavaScript is only one corner of the programming world.

Write functional code in a language that does not force you to write functional code. Take the training wheels off. Live in the real world.


Scheme is not a functional programming language. The last 2/3rds of sicp are possible only because you can mutate state.


Actors in Elixir (and AFAIK the Actor Model in general) can mutate their internal state in response to receiving a message. It would probably be awkward to use actors in this way just to facilitate mutation though.


Scheme is not a pure functional language. I think you need to check the rest of your notes.


According to Let Over Lambda, Lisp is the least functional programming language ;)

https://letoverlambda.com/textmode.cl/guest/chap5.html


    (define lol
      (let ((a 0))
        (lambda ()
          (set! a (+ a 1))
          a)))
Scheme is a functional programming language in the same way python is. The only difference is that it has tail call optimisation and the stack doesn't have an arbitrary limit on the number of function calls it can hold.


> JavaScript is only one corner of the programming world.

True, but it's a very obtuse corner!


In most implementations neither Python nor JS (except perhaps partially in Safari) is up to the task of even running the code of SICP properly, due to not having things like TCO.

So the code for versions of the book written using those languages would need to be restructured, losing a big chunk of elegance and possibly destroying the actual lessons about how to express oneself as a computer programmer.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: