Name: Anonymous 2011-01-24 14:42
And I'm not convinced about anything other than that Racket is slow as shit in a funnel. Explain this satori thing to me.
(cond ((number? x) ...) #|the compiler knows that x is a number|# ...)
(define (state-loop state args)
(let-values (((state args) (apply state args)))
(state-loop state args)))
mallocs and frees making the code look bigger?do/end, {}/[], etc.) automatically makes the language a DSL?loop macro is a perfect example of the extensibility of Lisp, but it's just a macro, its parser parses a list of symbols with car and cdr and generates code, it can't have something like f(x, y, z), it would be parsed as 'f '(x ,y ,z) and would also be a syntax error, because , has already a special meaning for the reader.foo symbol there was a space, a newline or a tab, because your macro is just a piece of Lisp code that runs at compilation/expansion time.repl function (macro?) and passes his code as string. He does all the parsing and calls the Lisp reader when necessary.loop still can't be done in other languages.
(define cons
(lambda (x y)
(lambda (c)
(c x y))))
(define true
(lambda (x y) x))
(define false
(lambda (x y) y))
(define car true)
(define cdr false)
(define-syntax list
(syntax-rules ()
((~ x l ...) (cons x (list l ...)))
((~) '())))