当前位置: 首页 > 工具软件 > Little Lisp > 使用案例 >

lisp princ详解_LISP-输入和输出

洪增
2023-12-01

LISP-输入和输出

常见的LISP提供许多输入输出功能。我们已经使用了format函数和print函数进行输出。在本节中,我们将研究LISP中提供的一些最常用的输入输出功能。

输入功能

下表提供了LISP最常用的输入功能-

Sr.No.

Function & Description

1

read & optional input-stream eof-error-p eof-value recursive-p

It reads in the printed representation of a Lisp object from input-stream, builds a corresponding Lisp object, and returns the object.

2

read-preserving-whitespace & optional in-stream eof-error-p eof-value recursive-p

It is used in some specialized situations where it is desirable to determine precisely what character terminated the extended token.

3

read-line & optional input-stream eof-error-p eof-value recursive-p

It reads in a line of text terminated by a newline.

4

read-char & optional input-stream eof-error-p eof-value recursive-p

It takes one character from input-stream and returns it as a character object.

5

unread-char character & optional input-stream

It puts the character most recently read from the input-stream, onto the front of input-stream.

6

peek-char & optional peek-type input-stream eof-error-p eof-value recursive-p

It returns the next character to be read from input-stream, without actually removing it from the input stream.

7

listen & optional input-stream

The predicate listen is true if there is a character immediately available from input-stream, and is false if not.

8

read-char-no-hang & optional input-stream eof-error-p eof-value recursive-p

It is similar to read-char, but if it does not get a character, it does not wait for a character, but returns nil immediately.

9

clear-input & optional input-stream

It clears any buffered input associated with input-stream.

10

read-from-string string & optional eof-error-p eof-value & key :start :end :preserve-whitespace

It takes the characters of the string successively and builds a LISP object and returns the object. It also returns the index of the first character in the string not read, or the length of the string (or, length +1), as the case may be.

11

parse-integer string & key :start :end :radix :junk-allowed

It examines the substring of string delimited by :start and :end (default to the beginning and end of the string). It skips over whitespace characters and then attempts to parse an integer.

12

read-byte binary-input-stream & optional eof-error-p eof-value

It reads one byte from the binary-input-stream and returns it in the form of an integer.

从键盘读取输入

读取函数用于从键盘获取输入。可能没有任何论据。

例如,考虑代码片段-

假设用户从STDIN输入中输入10.2,它将返回,

read函数从输入流中读取字符,并通过解析为Lisp对象的表示来解释它们。

创建一个名为main.lisp的新源代码文件,并在其中键入以下代码-

当您执行代码时,它返回以下结果-

创建一个名为main.lisp的新源代码文件,然后在其中键入以下代码。

当您执行代码时,它返回以下结果-

输出功能

LISP中的所有输出函数都使用一个称为output-stream的可选参数,将输出发送到该参数。如果未提及或为nil,则output-stream默认为变量* standard-output *的值。

下表提供了LISP最常用的输出功能-

Sr.No.

Function and Description

1

write object & key :stream :escape :radix :base :circle :pretty :level :length :case :gensym :array

write object & key :stream :escape :radix :base :circle :pretty :level :length :case :gensym :array :readably :right-margin :miser-width :lines :pprint-dispatch

Both write the object to the output stream specified by :stream, which defaults to the value of *standard-output*. Other values default to the corresponding global variables set for printing.

2

prin1 object & optional output-stream

print object & optional output-stream

pprint object & optional output-stream

princ object & optional output-stream

All these functions outputs the printed representation of object to output-stream. However, the following differences are there −

prin1 returns the object as its value.

print prints the object with a preceding newline and followed by a space. It returns object.

pprint is just like print except that the trailing space is omitted.

princ is just like prin1 except that the output has no escape character

3

write-to-string object & key :escape :radix :base :circle :pretty :level :length :case :gensym :array

write-to-string object & key :escape :radix :base :circle :pretty :level :length :case :gensym :array :readably :right-margin :miser-width :lines :pprint-dispatch

prin1-to-string object

princ-to-string object

The object is effectively printed and the output characters are made into a string, which is returned.

4

write-char character & optional output-stream

It outputs the character to output-stream, and returns character.

5

write-string string & optional output-stream & key :start :end

It writes the characters of the specified substring of string to the output-stream.

6

write-line string & optional output-stream & key :start :end

It works the same way as write-string, but outputs a newline afterwards.

7

terpri & optional output-stream

It outputs a newline to output-stream.

8

fresh-line & optional output-stream

it outputs a newline only if the stream is not already at the start of a line.

9

finish-output & optional output-stream

force-output & optional output-stream

clear-output & optional output-stream

The function finish-output attempts to ensure that all output sent to output-stream has reached its destination, and only then returns nil.

The function force-output initiates the emptying of any internal buffers but returns nil without waiting for completion or acknowledgment.

The function clear-output attempts to abort any outstanding output operation in progress in order to allow as little output as possible to continue to the destination.

10

write-byte integer binary-output-stream

It writes one byte, the value of the integer.

创建一个名为main.lisp的新源代码文件,然后在其中键入以下代码。

当您执行代码时,它返回以下结果-

格式化输出

函数格式用于生成格式正确的文本。它具有以下语法-

哪里,

目标是标准输出

控制字符串保存要输出的字符和打印指令。

格式指令由波浪号(〜),用逗号分隔的可选前缀参数,可选冒号(:)和符号(@)修饰符以及指示此指令类型的单个字符。

前缀参数通常是整数,用可选的带符号十进制数表示。

下表简要介绍了常用指令-

Sr.No.

Directive & Description

1

~A

Is followed by ASCII arguments.

2

~S

Is followed by S-expressions.

3

~D

For decimal arguments.

4

~B

For binary arguments.

5

~O

For octal arguments.

6

~X

For hexadecimal arguments.

7

~C

For character arguments.

8

~F

For Fixed-format floating-point arguments.

9

~E

Exponential floating-point arguments.

10

~$

Dollar and floating point arguments.

11

~%

A new line is printed.

12

~*

Next argument is ignored.

13

~?

Indirection. The next argument must be a string, and the one after it a list.

让我们重写计算圆面积的程序-

创建一个名为main.lisp的新源代码文件,然后在其中键入以下代码。

当您执行代码时,它返回以下结果-

 类似资料: