Функциональное программирование




Чтение и запись информации в файлы - часть 2


Итак:

* ( Defun foo ( x &rest y) y)

FOO

* ( Foo 3 )

NIL

* ( Foo 4 5 6 )

(5 6)

* ( defun fn ( x &optional y &rest z)) (list x y z)) fn

* (fn 'a)

(A NIL NIL)

* ( a b (c d))


10.1.3 Ключевые параметры

Можно задать функции другой вид необязательного аргумента называемого аргументом ключевого слова. Пользователь может задавать эти аргументы в последующем в любом порядке, потому что они маркированы ключевыми словами.

Символы t и nil называются константами-символами, потому-что они при выполнении дают сами себя.

Существует целый класс таких символов, которые называются ключевыми словами; любой символ, чье имя начинается с двоеточия является ключевым словом.

(Ниже приведены некоторые использования ключевых слов).

Примеры:

* :this-is-a-keyword

:THIS-IS-A-KEYWORD

* :so-is-this :SO-IS-THIS

* :me-too :ME-TOO

( Defun foo ( &key x y) ( cons x y) )

FOO

* ( Foo :x 5 :y 3 )

(5 . 3)

* ( Foo :y 3 :x 5 )

(5 . 3)

* ( Foo :y 3 )

( NIL. 3 )

* (Foo)

(NIL)

&key параметр может иметь также значение по умолчанию:

* ( Defun foo ( &key ( x 5 )) x )

FOO

* ( Foo :x 7 )

7

* (Foo)

5

(defun test ( x &optional (y 3) (z 4) &rest a) (cons z ( list x a y)))

(test 1 2 3)

(test 1)

(test 3 4 5)

(test 3 2 1 1 2 3)


10.2 Входные и выходные потоки.

При вводе и выводе информации в Лиспе используется понятие потоков - stream

Для потока определены ИМЯ , операции открытия open операции закрытия clouse направления output и input


10.3 Определение выходных и входных потоков.

Для открытия файла для записи задается его имя, производится операция open и указывается направление output:

(setq our-output-stream (open "sesame" :direction :output))

Зададим

(setq s 'e)

Можно вывести это значение в файл

(princ s our-output-stream) ;

Можно занести список

(print '(a b c d) our-output-stream)

Чтобы правильно закрыть поток необходимо в конец поместить

(terpri our-output-stream)

Затем файл закрывается

(close our-output-stream)




Содержание  Назад  Вперед