素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: twitter: @javascripter にどうぞ。

gauche

関数を定義するマクロ

マクロおもしろいなあ。 #!/usr/bin/env gosh (define-macro (ca..r n) (string->symbol (make-string n #\a)) `(define ( ,(string->symbol (string-append "c" (make-string n #\a) "r")) lis) (define (/lis lis i) (if (> i 0) (/lis (car lis) (- i 1))…

マクロとか

マクロ展開後に変数を漏らす必要がない場合?は、define-syntaxを使う。 #!/usr/bin/env gosh (define-syntax ++ (syntax-rules () ((++ var) (begin (set! var (+ var 1)) var)))) (let ((i 0)) (print i) ; 0 (print (++ i)) ; 1 (print (++ i))) ; 2 JSみ…

Gaucheのお勉強

Schemeをそれとなくやろうと思って、SICPとかは難しいなーと思って、簡単そうなのを探したら、R5RS (Revised^5 Report on Algorithmic Language Scheme) 日本語訳がよさそうなので、見ながらちょこちょこ書いた。再帰を使ってリストのサイズを出す。末端再帰…