Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 34

Определить макрос our-if, который имеет следующую форму (OUR-IF test :THEN exp1 exp2… :ELSE exp3 exp4 …)

25.11.2013, 22:32. Показов 1428. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, необходимо определить макрос our-if, который имеет следующую форму
(OUR-IF test
:THEN exp1 exp2…
:ELSE exp3 exp4 …). Спасибо.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.11.2013, 22:32
Ответы с готовыми решениями:

Url имеет форму http://local.test/?q=services
Я установил себе апаче, и только через неделю заметил эту проблему. Все мои ссылки генерируются в таком виде: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38203 / 21135 / 4310
Регистрация: 12.02.2012
Сообщений: 34,740
Записей в блоге: 14
26.11.2013, 00:36
Как вариант (для HomeLisp):

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
(defmacro our-if (test &rest tail)
  (let   ((pt  (position :then tail))
          (lt  (length tail))
          (pe  (position :else tail)))
         (if (or (null pt) (null pe) (/= 0 pt) (= 1 pe))
             (raiseerror "Ошибка в синтаксисе OUR-IF") 
             (let ((body-t (subseq tail 1 pe))
                   (body-f (subseq tail (+ pe 1) lt)))
                  `(cond (,test ,@body-t)
                         (t ,@body-f))))))
 
==> our-if
 
(let ((x 5) (y 2))
  (our-if (> x y) 
    :ten  ;; !!!! тут ошибка !!!
      (say "AAA")
      (iter (for i from 1 to (* x x)) (summing i))
    :else
      (say "BBB")
      (iter (for i from 1 to (* y y)) (summing i))))
 
Ошибка в синтаксисе OUR-IF
==> ERRSTATE
 
(let ((x 5) (y 2))
  (our-if (> x y) 
    :then
      (say "AAA")
      (iter (for i from 1 to (* x x)) (summing i))
    :else
      (say "BBB")
      (iter (for i from 1 to (* y y)) (summing i))))
 
==> 325
2
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
26.11.2013, 04:05
Лучший ответ Сообщение было отмечено как решение

Решение

Lisp
1
2
3
4
(defmacro our-if (cond &body body)
           (let* ((exp2 (cdr (member :else body)))
                  (exp1 (cdr (butlast (member :then body) (1+ (length exp2))))))
             `(if ,cond (progn ,@exp1) (progn ,@exp2))))
3
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
26.11.2013, 16:44
Lisp
1
2
3
4
5
6
7
8
(defmacro our-if (test &rest body)
  (let* ((bt (position :then body))
         (et (position :else body))
         (th (subseq body (1+ bt) et))
         (el (cdr (member :else body))))
    `(cond
       (,test ,@th)
       (t ,@el))))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru