Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Застрял на 4-м тесте

5 views
Skip to first unread message

Michael N. Kuleshov

unread,
Aug 28, 2007, 9:52:36 AM8/28/07
to
Добрый день!

Изучая Лисп по http://www.intuit.ru/department/pl/lisp/ (у меня локальная
версия), застрял на тесте к 4-й лекции
http://www.intuit.ru/department/pl/lisp/4/ То ли бестолковый, то ли лекции
написаны небрежно.

Спорадически набираю 8 из 10 правильных ответов, к сожалению, на часть
отвечаю, просто подставляя в GNU Lisp.
Иногда получаю результаты, которых нет среди вариантов.

Иногда предлагают выбрать один вариант (радиобоксом), хотя правильных, на
мой взгляд, два, например (по памяти):

"Какая форма может быть переменной:
о (А) о 123
о A123 вариант: о A123
o Abc o Abc

(o - я так обозначил радиобокс с выбором _одного_ варианта)

Я так понимаю, что (A) - одноэлементный список, s-выражение, а форма - это
список из функции и ее аргументов (из первой лекции).
Поэтому (А) - это не форма по определению.

Еще вопрос.
Если в COND в одной из ветвей пропущен предикат, то будет ли выполняться ее
выражение.
Hапример, для e3 и p1=p2=Nil: (COND (p1 e1) (p2 e2) (e3))
Что в этом случае будет результатом?

Михаил


Alex Mizrahi

unread,
Aug 28, 2007, 3:55:22 PM8/28/07
to
(message (Hello 'Michael)
(you :wrote :on '(Tue, 28 Aug 2007 13:52:36 +0000 (UTC)))
(

MNK> Изучая Лисп по http://www.intuit.ru/department/pl/lisp/ (у меня
локальная
MNK> версия), застрял на тесте к 4-й лекции
MNK> http://www.intuit.ru/department/pl/lisp/4/ То ли бестолковый, то ли
лекции
MNK> написаны небрежно.

не читайте советских газет..

MNK> Спорадически набираю 8 из 10 правильных ответов, к сожалению, на часть
MNK> отвечаю, просто подставляя в GNU Lisp.

gcl? одна из худших реализаций

MNK> Я так понимаю, что (A) - одноэлементный список, s-выражение, а форма -
MNK> это список из функции и ее аргументов (из первой лекции).

из глоссария спецификации:

form n. 1. any object meant to be evaluated. 2. a symbol, a compound form,
or a self-evaluating object.

то есть форма -- это нечно, предназначеное для исполнение.

MNK> Поэтому (А) - это не форма по определению.

как раз (A) -- форма по любому определению. это вызов функции A без
аргументов -- пустой список аргументов ведь тоже список :)

MNK> Еще вопрос.
MNK> Если в COND в одной из ветвей пропущен предикат, то будет ли
MNK> выполняться ее выражение.
MNK> Hапример, для e3 и p1=p2=Nil: (COND (p1 e1) (p2 e2) (e3))
MNK> Что в этом случае будет результатом?

опять же, смотрим в стандарт:

Macro COND
Syntax:
cond {clause}* => result*
clause::= (test-form form*)

то есть, предикат не может быть пропущен. может быть пропушено выражение --
то есть если предикат удовлетворится, оно сразу же успешно выйдет из cond
(результатом будет NIL). логично, не правда ли?

к примеру:

(cond
((eql v 'abc) (print "ABC"))
((eql v 'def)) ;;do nothing
(t (print "something unexpected!")))

)
(With-best-regards '(Alex Mizrahi) :aka 'killer_storm)
"choose no life")


Ruslan Kosolapov

unread,
Aug 29, 2007, 12:15:43 AM8/29/07
to

MNK> Изучая Лисп по http://www.intuit.ru/department/pl/lisp/ (у меня локальная
MNK> версия), застрял на тесте к 4-й лекции

Интуит - говно.

Изучай по practical common lisp. Ещё sicp хорошо, но там scheme.

--
rk

adej...@tochka.ru

unread,
Aug 30, 2007, 12:39:16 AM8/30/07
to
On Aug 28, 11:55 pm, "Alex Mizrahi" <udode...@users.sourceforge.net>
wrote:
> Macro COND
[...]

> то есть, предикат не может быть пропущен. может быть пропушено выражение --
> то есть если предикат удовлетворится, оно сразу же успешно выйдет из cond
> (результатом будет NIL). логично, не правда ли?

Логично, но неверно. Если выражений в ветке COND нет, возвращается
значение предиката. Hапример:

CL-USER> (defun f (x)
(member x '(7 5 8)))
F
CL-USER> (cond ((f 3))
((f 5)))
(5 8)

Alex Mizrahi

unread,
Aug 31, 2007, 5:42:55 AM8/31/07
to
(message (Hello 'adej...@tochka.ru)
(you :wrote :on '(Thu, 30 Aug 2007 04:39:16 +0000 (UTC)))
(

??>> Macro COND
??>> то есть, предикат не может быть пропущен. может быть пропушено
??>> выражение -- то есть если предикат удовлетворится, оно сразу же
??>> успешно выйдет из cond (результатом будет NIL). логично, не правда ли?

a> Логично, но неверно. Если выражений в ветке COND нет, возвращается
a> значение предиката.

да, так даже более логично :)

Alex Ott

unread,
Sep 7, 2007, 2:48:28 PM9/7/07
to
Всем привет

>>>>> "RK" == Ruslan Kosolapov writes:
MNK> Изучая Лисп по http://www.intuit.ru/department/pl/lisp/ (у меня

MNK> локальная версия), застрял на тесте к 4-й лекции

RK> Интуит - говно.

RK> Изучай по practical common lisp. Ещё sicp хорошо, но там scheme.

А если посмотреть на http://pcl.catap.ru/doku.php, то можно увидеть там
начало русского перевода.

Замечания приветствуются

--
With best wishes, Alex Ott, MBA
http://alexott.blogspot.com/ http://content-filtering.blogspot.com/
http://alexott-ru.blogspot.com/ http://content-filtering-ru.blogspot.com/
http://xtalk.msk.su/~ott/

0 new messages