Есть ли возможность нескольких операторов внутри тела условного оператора?

Я прежде всего C++ (, поэтому программирую объектно-ориентированный/императивный ), и я нахожу довольно странным, что у вас может быть только один оператор на оценку в условном операторе, таком как оператор if -в схеме, функциональный язык.

Например:

 (let ((arg1 0) (arg2 1))
   (if (> arg1 arg2)
       arg1
       arg2)))

Ошибочный пример:

(let ((arg1 0) (arg2 1))
  (if (> arg1 arg2)
      (arg1 (display "cool"))
      (arg2 (display "not cool"))))

выдает мне ошибку вида "процедура приложение :ожидаемая процедура, учитывая :2; аргументы были:#пустота"

Это можно решить, поместив указанный условный оператор в разные операторы в теле определенной функции, например, с телом условного оператора, каждый раз имеющим отдельные операторы следующим образом:

(if (condition) statement1a statement2a)
(if (condition) statement1b statement2b)

и так далее...

Само собой разумеется, что это не слишком практично. Не говоря уже о дублированном коде.

Я что-то пропустил здесь или действительно нет другого пути?

18
задан Asumu Takikawa 29 June 2012 в 16:19
поделиться