t3x.org / sketchy / library / letstar.html
SketchyLISP
Reference
  Copyright (C) 2006
Nils M Holm

let*

Conformance: R5RS

Purpose: Bind values sequentially:
(let* ((a 1) (b (+ 1 a))) b)
equals
(let ((a 1)) (let ((b (+ a 1))) b))

Arguments:
N - name
V - value
X - expression (body)

Implementation:

(define-syntax let*
  (syntax-rules ()
    ((_ () x)
      (let () x))
    ((_ ((n v)) x)
      (let ((n v)) x))
    ((_ ((n1 v1) (n2 v2) ...) x)
      (let ((n1 v1))
        (let* ((n2 v2) ...) x)))))

Example:

; Example needs pre-loaded image
(let* ((a 1) (b (+ 1 a))) b)