[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [bep] learning lisp: while



 r高橋 on Emacsです(いちいちうるさい?(^_^;))。

Reply TAKAHASHI Naoto <ntakahas@...>'s message:

} プログラムを書くのはパズルを解くようなもので、考えるのにある程度時間が
} かかるくらいの難度のものがやってて一番面白いと思います。でも心配しない
} で下さい。世の中にはいくらでも難しいプログラムがありますから、上達しす
} ぎてプログラミングに飽きることはありません。:-)

 ……上達しすぎて飽きる前に挫折の可能性が……(^^;;;)。
でも、「パズルを解くようなもの」というのは、ほんと、そうなんだろうなと思
います。解けたときうれしいし。

 とても安易なので、もしできれば……でかまわないのですが、プログラミング
初心者が解いたらおもしろそうと思えるような課題があったら教えてください。
プログラムでどんなことができるのか、まだ全然わかっていないし、簡単なもの
をたくさん作る経験ができたら、いろいろなことに応用できる基礎的な知識が身
につけられるような気がするんです。

 例のappend-buffer-to-fileを、whileを使って書き直してみました。なんとな
く、できたっぽいのですが……どうでしょう?

;;; バッファ全体をファイルに追加(shift jis)
(defun append-buffer-to-file ()
  (interactive)
  (let 
      ((coding-system-for-write 'shift_jis-dos)  
       (filename (read-file-name "append buffer to: " default-directory)))
    (while
	(or (not (file-writable-p filename))
	    (and (not (file-regular-p filename))
		 (file-exists-p filename)))       
      (setq filename (read-file-name "file not writable. append buffer to: " default-directory)))
    (append-to-file (point-min) (point-max) filename)))
;;; ここまで

 filename というシンボルに、二回目からの (read-file-name) の結果をどう
やって入れるかですごく悩みました。(setq)を使うことがなかなか思いつけなく
て。あと、ファイルが書き込めるかのチェックがこれまでとは逆になるので、ほ
んとうにこれでうまくいくのかどうか、ちょっと心配です。

 最初、"file not writable."を(message)で書こうとしたのですが、つぎの
"append buffer to: "に消されてしまうせいか、全然表示されませんでした
(BEPもしゃべらなかった、(message)だけだとしゃべるのですが)。

 注意表示(?)の書き方は、こんな感じでいいでしょうか?
minibufferに書き込めるのは、何文字までですか?


**-***-***-***-***-***-***-***-***-***-***-***-**
           Reiko TAKAHASHI  (高橋玲子)
         E-mail:  HFC03614@...
         ICQ UIN: 85924121  (Twinkle)
**-***-***-***-***-***-***-***-***-***-***-***-**