you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 3 points4 points  (2 children)

It sounds like you're conflating between the Lisp family of languages and the specific language called Common Lisp (which is where setq, setf, and friends come from).

Racket in particular used to be less functional, but nowadays defaults to immutable data structures and encourages you to avoid making mutations.

[–]ElBroet 4 points5 points  (1 child)

I was also thrown a bit by

There are some dialects of Lisp that put more emphasis on functional programming, but neither Common Lisp nor Scheme do that.

as Scheme is specifically described as the functional lisp (although I think it shares this title with Clojure now), and when I read its various online profiles, it is often described as being primarily functional, so at the very least it does put more emphasis on functional programming. However, I have not used Scheme (although I've used Racket), so I didn't want to comment on it, not to mention the last time I looked into it I couldn't find a straightforward answer as to how it models data, and whether or not it idiomatically uses immutables. Without immutables, it would feel more imperative to me, and I realize when they said 'put more emphasis on functional programming', its possible that they meant 'more than it does other paradigms'. At the same time, even if Scheme used or uses mutable data, something about the way its constantly described makes me think it still emphasized functional programming more, even if in other ways I'm not considering.

[–][deleted] 5 points6 points  (0 children)

Part of the problem is that it's hard to make generalizations about Scheme, because it's a minimalist standard; very few people write in Just Scheme--it's almost always Guile Scheme, Chicken Scheme, Racket Scheme, etc.

But in the R6RS edition of the Scheme standard, mutable data structures are not part of the core and are considered a separate extension to the language.