программ.
Рассмотрим программу вычисления факториала.
Пример программы.
begin f := 1;
while n > 1 do begin
f := f * n;
n := n – 1
end
endВ начальном состоянии существенно только
значение переменной n; в конце работы результат
определяется значением переменной f.
Прежде всего, переведем программу в вид, удобный для обработки.
data Expression = { представление выражений }
data Operator = { представление операторов }
data Context = { представление контекста переменных }
Два способа обработки и исполнения программы:
Интерпретация:
interpret :: Operator -> Context -> Context
Компиляция:
compile :: Operator -> (Context -> Context)
На самом деле оба способа представлены одной и той же карринговой функцией!