- 128 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 17:39:47 ]
- Common Lisp入門を参考に、プログラムを書きました。
問題点、改善案など、何かアドバイスをもらえないでしょうか? 動作確認はxyzzyとclispで行いました。 ●実現したいこと ファイルから特定の行を抽出し、その行のみ新たにファイルへ書き出す。 動作確認がしやすいように、行の位置は変えないようにする。 ●自分でおかしいと思ってる点 ・1行ずつ読み込んでる力ワザ ・progn 使いすぎ? ・引数に nil が使われないように'(10000)を lst にバインドしている所 ・行の指定が昇順でなければならない所 (progn (setq str1 (open "in.txt")) (setq str2 (open "out.txt" :direction :output)) (setq eos (cons nil nil)) (setq lst '(10 30 400)) ;取り出したい行をリストで指定、必ず昇順 (defun kakikaki (x) (setq str0 (read-line str1 nil eos)) (cond ((eq str0 eos) (princ "STOP")) ((< x (car lst)) (progn (format str2 "~%" ) (kakikaki (+ 1 x)))) ((not (eq str0 eos)) (progn (format str2 "~a~%" str0) (setq lst (cdr lst)) (and (not lst) (setq lst (list 10000))) (kakikaki (+ 1 x)))) (t "END"))) (kakikaki 1) (close str1) (close str2) ) よろしくお願いします。
|

|