--- 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)))