My開発メモ

read-lineの使い方 – Emacs-Slimeでハングアップした (Common-Lisp : Ubuntu22.04)

まだ、詳細がわからないが、とりあえずメモしておく。

以下は、参考サイトに載っていた例。

1つめの値: 読み取られる行。文字列としてあらわされる。改行を除く。
2つめの値: 改行で終了されている場合は、NIL。ファイルの終わりなら、T。

CL-USER> (setq a "line 1
               line2")

"line 1
               line2"
CL-USER> (read-line (setq input-stream (make-string-input-stream a)))
"line 1"
NIL
CL-USER> (read-line input-stream)

"               line2"
T
CL-USER> (read-line input-stream nil nil)
NIL
T

注意!!!

Emacsの SLIME で、(read-line) を実行すると、ハングアップする。
1文字なら入力できるが、2文字めを入力したとたん、ハンブアップする。
どうやら、SWANKサーバーとの通信がうまくいかないっぽい。

とりあえず、Emacsを使わずにターミナルから

$ clisp

と入力して、

> (read-line)

と実行するしかない。

参考

Function READ-LINE
( https://www.lispworks.com/documentation/lw60/CLHS/Body/f_rd_lin.htm )

CLISPからSBCLに変更したら、ハングアップしなくなった

CLISPからSBCLに乗り換える (Ubuntu22.04) — My開発メモ に書いたように、
CLISPとEmacsとの相性の問題じゃないか?と思って、SBCLに乗り換えたら、
うまく動いた。

カテゴリー: Lisp, memo

タグ: clisp, common-lisp, Lisp, read-line, 標準入力

カウント: 124