> 1 <

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

Nadezdushka

Members


Статус

8 сообщений

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

#6849   2012-12-25 01:38 GMT+3 часа(ов)      
С помощью макроса определите синтаксическую конструкцию, в соответствии с ва
риантом. При организации повторяющихся вычислений использовать рекурсию (ре
курсивные макросы). При этом, в случае неверного написания и / или отсутствия
ключевого (или нескольких) слов, а так же аргумента, выдать сообщение об ошибке
указанием места (неверного или отсутствующего ключевого слова или аргумента).
та Описание синтаксической конструкции
(dotimes1 times
((var1 value1) (var2 value2) … )
form1
form2

formN)
dotimes1 – название управляющего предложения, times – число повторений, var1
var2 и т.д. – статические переменные, которые связываются на первом шаге по-
вторений со своими значениями value1 value2 и т.д., form1 form2 … formN –
лисповские выражения.
В начале вычисления предложения переменные var1, var2 и т.д. связываются со
своими значениями value1, value2 и т.д., затем формы form1, form2 … formN из
тела цикла вычисляются последовательно столько раз, сколько указано пара-
метром times (должно быть числом). В качестве значения формы возвращается
значение последней формы (formN в последней итерации). Если переменных
предложения нет, на месте их объявления должен быть пустой список.
Например:
>(dotimes1 5 ((sum 0)) (setq sum (+ sum 10)))
50

netrino

Members


Статус

3 сообщений

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

#6851   2012-12-26 00:00 GMT+3 часа(ов)      
Зачем же сразу три одинаковых темы?

 
(defmacro dotimes1 (times (&rest bindings) &body body)
(let ((counter (gensym "counter"))
(return-value (gensym "return-value"))
(times-evaled (gensym "times-evaled")))
`(do ((,counter 0 (1+ ,counter))
(,return-value nil (progn ,@body))
(,times-evaled ,times)
,@bindings)
((>= ,counter ,times-evaled)
,return-value))))
 
> 1 <


Онлайн :

1 пользователь(ей), 12 гость(ей) :
Hedin



Реклама на сайте: