> 1 <

Автор Сообщение

Disaster

Members


Статус

2 сообщений

Где: Russia
Род занятий:
Возраст:

#3596   2010-12-05 08:33 GMT+3 часа(ов)      
Здравствуйте!
Три совершенно несложных задачки. На си или паскале написал бы без проблем...Но лисп -это точно не мое.

1)Напишите функцию, которая вводит фразу на естественном языке и преобразует ее в список.
2)Запишите следующие лямбда-вызовы с использованием формы LET и вычислите их на машине:
((LAMBDA (x y) (LIST x y))
((LAMBDA (z) z) ‘a)
‘b).
3)Напишите функцию,аналогичную функции SUBST , но в которой третий аргумент W обязательно должен быть списком.

megamanx

Members


Статус

307 сообщений

Где: Russia
Род занятий:
Возраст:

#3599   2010-12-05 16:17 GMT+3 часа(ов)      
1)
(defun split-by-space ()
(let ((string (read)))
(loop for i = 0 then (1+ j)
as j = (position #\Space string :start i)
for temp = (subseq string i j)
when (not (string= temp "")) collect temp
while j)))
(split-by-space)
>> " asd asdddd sadasdasd "
>>("asd" "asdddd" "sadasdasd")
2) (let ((x 'a)(y 'b)) (list x y))

3) В subst что значит, чтобы третий аргумент был списком?
вот так?
(defmacro mysubst (a b body))
`(subst ,a ,b ',body))
>> (mysubst 'a 's (a s d f))
>> (a a d f)

можно и так
(defmacro mysubst (a b body))
`(subst ',a ',b ',body))
>> (mysubst a s (a s d f))
>> (a a d f)

отредактировал(а) megamanx: 2010-12-05 16:44 GMT+3 часа(ов)
I wish I'd made you angry earlier

Disaster

Members


Статус

2 сообщений

Где: Russia
Род занятий:
Возраст:

#3600   2010-12-05 18:03 GMT+3 часа(ов)      
Спасибо большое!
> 1 <


Онлайн :

0 пользователь(ей), 29 гость(ей) :