Я искал синтаксис для определения правила синтаксиса, но я все еще застрял.Синтаксис синтаксиса-правила
Я хочу, чтобы определить правило с этой подписью:.. (Определить-синтаксическое правило ({Вала в LST} возвратный Рез)
В основном это просто применяет карту учитывая вал и LST Но я борется с синтаксисом. Это то, что я придумал до сих пор. .... (синтаксис-rules() ((для val in lst) (карта (val lst)))) . ..
вход будет что-то вроде:
(для {Вала в «(0 1 2 3 4) } return (- val 1) )
и вывод (-1 0 1 2 3), как если бы карта была вызвана в списке.
Вы не можете использовать 'define-syntax-rule', поскольку у вас есть литералы в определении (т.е.' in' и 'return'). @ Ответ GoZoner (если вы добавите parens вокруг '(val in list)'), вы получите то, что хотите. (И в Racket фигурные скобки такие же, как и обычные parens.) – stchang
Кстати, Racket поставляется с ['for/list'] (http://docs.racket-lang.org/reference/for.html?q = для/list #% 28form ._% 28% 28lib._racket% 2Fprivate% 2Fbase..rkt% 29._for% 2Flist% 29% 29), что делает то же самое, что и вы пытаетесь определить. '(для/list ([val '(0 1 2 3 4)]) (- val 1))' => '' (-1 0 1 2 3)' – stchang