Hacker News new | ask | show | jobs
by lispm 2969 days ago
> generally reeks of the 70s

Scheme was implemented as a clean toy/educational Lisp on top of Maclisp in the mid 70s.

Scheme was defined too small upto R5RS and in R6RS is got unlispy.

> Scheme actually tried to compete with CL once

It never really did, since all implementations were different. There are lots of great Scheme implementations (MIT Scheme, Chez Scheme, ...) - but all were different. Then a bunch of extension were bolted onto Scheme - but the base was too small.

> It is much more pleasant to actually work in, and feels cleaner.

Which Scheme? Chicken Scheme? Racket - which is no longer a Scheme? Kawa? They are cleaner than CL?

The last clean Scheme was R5RS - and that was underspecified as a programming language.

Whenever I used Scheme I missed keyword arguments, CLOS, LOOP, optimization declarations, type declarations... Oh, wait. All those and much more has been added to Scheme in some ways. Unfortunately the result does not look 'cleaner'.

Chicken Scheme:

    (define-method (pop (stack <stack>))
      (let* ((c (slot-value stack 'content))
             (x (car c)))
        (set! (slot-value stack 'content) (cdr c))
        x))
Let's see how it's written in Common Lisp:

    (defmethod stack-pop ((s stack)) 
      (pop (slot-value s 'content)))