--- title: 『プログラミングGauche』を読む author: kazu634 date: 2008-10-25 url: /2008/10/25/_1133/ wordtwit_post_info: - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4349;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' categories: - gauche - Lisp ---

プログラミングGauche』の勉強だよ。気になった部分だけ抜粋。

出力

format手続きを使うよ。これはCのprintfと一緒。

;; formatの使い方
;; "~d": 10進数
;; "~b":  2進数
;; "~o":  8進数
;; "~x": 16進数
;; ~とアルファベットの間の数字は桁数を示す
gosh> (format #t "Result = |~3@a|\n" (* 3 4))
Result = | 12|
#<undef>
gosh> (format #t "Result = |~5@a|\n" (* 3 4))
Result = |   12|
#<undef>
gosh> (format #t "Result = |~10@a|\n" (* 3 4))
Result = |        12|
#<undef>

ハッシュ

ハッシュも使えるよ。Perlから影響を受けて作ったそうなので、かなり簡単に使えるようになっている気がする。

;; === ハッシュ ===
;; ハッシュの生成
(define hash-table (make-hash-table))
;; ハッシュにデータを追加
(hash-table-put! hash-table 'name "Gauche")
;; ハッシュからデータを入手する
(hash-table-get hash-table 'name)
;; ハッシュからデータを削除する
(hash-table-delete! hash-table 'name)
;; ハッシュのキーに複数のデータを登録する
;; nameキーに「Gauche」と「foo」をヒモづける
(hash-table-push! hash-table 'name "Gauche")
(hash-table-push! hash-table 'name "foo")
;; ハッシュのキーからポップする
(hash-table-pop! hash-table 'name)
;; ハッシュのキーを列挙
(hash-table-keys hash-table)
;; ハッシュのvalueを列挙
(hash-table-values hash-table)
;; ハッシュのキーと組になる値を表示する
(hash-table-for-each hash-table (lambda (key value)
(print #`",|key| : ,|value|")))
;; ハッシュのキーと値をベクターにする
(hash-table-map hash-table (lambda (key value)
(vector key value)))