開発環境
- 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 コメント:
コメントを投稿