Scheme

ちょっと息抜き GaucheでXMLを読み込む

仕事では、XMLを扱うことが多いのです。『プログラミングGauche』を写経し始めたばかりで、まだまだへっぽこな私ですが、早速、日頃の業務に使ってみようかなぁと思っています。そこで手習いとして、GaucheでXMLを扱った処理をいくつか書いてみます。最初は…

Gauche 組み込み手続きに使用されている名前を上書きした後で、元に戻す方法

すぐ忘れるのでメモ。 ;lengthを書き換えた (define (length lst) (if (null? lst) 0 (+ 1 (length (cdr lst))))) ;元の組み込みlengthで定義しなおす(『プログラミングGauche』のP49より) (define length (with-module gauche length)) 元に戻す方法がわ…

「プログラミングGauche」を読む(2) 7章 手続き

each-of-numbersを定義する (define (for-each-numbers proc lst) (for-each proc (filter number? lst)))gosh> (for-each-numbers print '(1 #t 2 "hoge" 3)) 1 2 3 #<undef> map-numbersを定義する (define (map-numbers proc lst) (map proc (filter number? lst</undef>…

「プログラミングGauche」を読む(1) 6章 リスト

foldを使わず、lengthを定義する こう? (define (length lst) (if (null? lst) 0 (+ 1 (length (cdr lst)))))gosh> (length '()) 0 gosh> (length '(1 2 3)) 3できたみたい。 deep-copy-listを定義する (define (deep-copy-list lst) (if (pair? lst) (cons…

「プログラミングGauche」を読む(0) 1章から5章まで

「プログラミングGauche」を買ってきた。Scheme(に限らず、関数型言語全般)に触れるのは初めて。早速写経します。