Представление функциональных программ в виде S-выражений.
Одним из способов представления формулы в виде S-выражения является язык Scheme. В языке scheme не различаются строчные и прописные буквы, идентификатором является любая последовательность букв. цифр и спецсимволов, не начинающаяся с цифры.
Группа |
Абстрактная форма |
Scheme |
1 |
2 |
3 |
Переменные |
X |
X |
Константы |
‘X ‘(1 2 3 ) 10, 1.25 #T, #F |
‘X или (QUOTE X) ‘(1 2 3) 10, 1.25 #T, #F |
Арифметические операции |
x+y, x-y, x*y, x/y -x,x^y, xmod y |
(+ X Y), (- X Y), (* X Y), (/ X Y), (-X), (EXPT X Y),(REMAINDER X Y) |
Сравнения |
x=y, x¹y x<y, x>y x³y, x£y |
(= X Y), (NOT (= X Y)), (< X Y), (> X Y), (>= X Y), (<= X Y) |
Логические операции |
не x, x и y x или y |
(NOT X), (AND X Y) (OR X Y) |
Обработка списков |
car(x), cdr(x),cons(x,y), atom(x), eq(x,y), null(x), number(x) |
(CAR X), (CDR X), (CONS X Y), (NOT (PAIR? X)), (EQ? X Y), (NULL? X), (NUMBER? X). |
Вызов функции |
f(x1,x2,..,xn) |
(F X1 X2..XN) |
Условное предложение |
если e1 то e2 иначе e3 |
(IF E1 E2 E3) |
Блоки локальных определений |
{e где x1=e1..} {пусть x1=e1.. в e} {e гдерек x1=e1..} {пустьрек x1=e1.. в e} |
(LET (X1 E1)..(XK EK)) E)
(LETREC((X1 E1)..(XK EK)) E) |
l-выражения |
l(x1,x2..xn)=e |
(LAMBDA (X1 X2..XN) E) |
Определения |
f(x1,x2,..,xn)=e g=e |
(DEFINE (F X1…XN) E) (DEFINE G E) |
Отложенные вычисления |
Задержать x Возобновить x |
(DELAY X) (FORCE X) |