Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
513 views
in Technique[技术] by (71.8m points)

lisp - How to read sexp from file

If I write a file using

(with-open-file (s "~/example.sexp" :direction :output)
           (write '(1 2 3) :stream s)
           (write '(4 5 6) :stream s)
           (write '(7 8 9) :stream s))

A file is created containing

(1 2 3)(4 5 6)(7 8 9)

But when I attempt to open and read it using

(setf f (open "~/example.sexp"))
(read :input-stream f)

I get an ":INPUT-STREAM is not of type STREAM" error.

(type-of f)

returns STREAM::LATIN-1-FILE-STREAM which looks like it is at least close to what I need. What is the difference?

How can I read the lists I've written to the file?

question from:https://stackoverflow.com/questions/65938469/is-there-an-easy-way-to-read-a-list-from-an-input-file-in-common-lisp

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You got the arguments to READ wrong. It should be simply (read f), not (read :input-stream f).


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...