Более конкретно, меня интересует одно конкретное свойство begin
, где определения в его теле добавляются в окружающую область. Например.Можно ли определить макрос с теми же свойствами, что и форма начала?
(begin (define a 1)
(define b 2))
(+ a b) ; 3
Было бы достаточно простой, чтобы определить новый макрос my-begin
, что переводится на стандартный begin
, но в моем конкретном случае использования мне нужен список всех идентификаторов, которые в настоящее время связаны в начинаются, так что я могут вводить/использовать их в другом месте.
Быть более конкретным относительно того, чего я хочу достичь: Я выясню, как построить оператор PAR/AND
, который одновременно оценивает две ветви (или, по крайней мере, дает впечатление, учитывая контекст). Филиалы могут содержать операции блокировки. Сам PAR/AND
возвращается после возвращения обеих ветвей. Любые определения становятся доступными в отдаленном объеме. Например:
(PAR/AND
(define a (do-something)) ; branch 1
(define b (do-something-else))) ; branch 2
(+ a b)
Я не совсем уверен, но как реализовать его (так как у меня есть некоторые дополнительные вещи, чтобы беспокоиться о), но делает a
и b
доступны за пределами сферы par/and
, безусловно, то, что нужно происходят в какой-то момент.
Звучит как проблема XY. Что вы на самом деле пытаетесь достичь? – Sylwester
Возможно, вы правы. Я добавил еще несколько вопросов к вопросу. – Sam