2011/11/05

ておくlet

defmacro
(define-macro (teoku-let binds . body)
  `(let ,(map (lambda (ls)
               (cons (car ls)'("ておくれ"))) binds)
     ,@body))

(teoku-let ((wasao 68)
            (gentoo 'linux)
            (kumamoto "熊本"))
       (print wasao)
       (print gentoo)
       (print kumamoto))
;; ておくれ
;; ておくれ
;; ておくれ


syntax-rules
                                                                                                                     
(define-syntax teoku-let
  (syntax-rules ()
    ((_ () body ...)
     (let ()
       body ...))
    ((_ ((var val) x ...) body ...)
     (let ((var "ておくれ"))
       (teoku-let (x ...)
                  body ...)))))

(teoku-let ((wasao 68)
            (gentoo 'linux)
            (kumamoto "熊本"))
       (print wasao)
       (print gentoo)
       (print kumamoto))
;; ておくれ
;; ておくれ
;; ておくれ


プログラミングGauche

0 件のコメント:

コメントを投稿