開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- Scheme (プログラミング言語)
- kscm(コンパイラ(ksc)・インタプリタ(ksi)、実装)
- 計算機プログラムの構造と解釈(参考書籍)
Head First Python (Paul Barry (著)、O'Reilly Media)のChapter 9.(The Context Management Protocol: Hooking Into Python's With Statement) の SHARPEN YOUR PENCIL(No. 6522) を Scheme で取り組んでみる。
Relational Database 、 MySQL、MariaDBの代わりに ファイルに履歴を書き込むことで代用。
SHARPEN YOUR PENCIL(No. 6522)
コード(Emacs)
(begin (define (with context-manager) (context-manager 'enter) (context-manager 'exit)) (define (use-database config) (define (enter) (open-input-file (cdr (assq 'database config)))) (define (exit) #f) (define (dispatch m) (cond ((eq? m 'config) config) ((eq? m 'enter) enter) ((eq? m 'exit) 'exit))) dispatch) (define dbconfig (list (cons 'host "127.0.0.1") (cons 'user "vsearch") (cons 'password "vsearchpasswd") (cons 'database "vsearchlogDB.log"))) (define ud (use-database dbconfig)) (define file ((ud 'enter))) (display (ud 'config)) (newline) (display file) (newline) 'done )
入出力結果(Terminal, ksi, ksc)
$ ./ksi < dbcm.scm > ((host . 127.0.0.1) (user . vsearch) (password . vsearchpasswd) (database . vsearchlogDB.log)) #<input-port vsearchlogDB.log> => done > $
0 コメント:
コメントを投稿