-
-
Save RadchenkoRV/1621fb1c352d37605200243a5c1ce496 to your computer and use it in GitHub Desktop.
Аппликативный и нормальный порядки вычисления
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ; Аппликативный и нормальный порядки вычисления | |
| ; | |
| ; «полная подстановка, затем редукция» известен под на- | |
| ; званием нормальный порядок вычислений (normal-order evaluation) | |
| ; | |
| ; Пример работы нормального порядка вычисления | |
| ; Последовательность подстановок | |
| ; (sum-of-squares (+ 5 1) (* 5 2)) | |
| ; (+ (square (+ 5 1)) (square (* 5 2)) | |
| ; (+ (* (+ 5 1) (+ 5 1)) (* (* 5 2) (* 5 2))) | |
| ; | |
| ; за которыми последуют редукции | |
| ; (+ (* 6 6) (* 10 10)) | |
| ; (+ 36 100) | |
| ; | |
| ; вычисление (+ 5 1) и (* 5 2) выполняется | |
| ; здесь по два раза, в соответствии с редукцией выражения | |
| ; | |
| ; «вычисление аргументов, затем применение процедуры», кото- | |
| ; рое называется аппликативным порядком вычислений (applicative-order evaluation) | |
| ; | |
| ; Пример работы аппликативного порядка вычисления | |
| ; (sum-of-squares (+ 5 1) (* 5 2)) | |
| ; (+ (square 6) (square 10)) | |
| ; (+ 36 100) | |
| ; | |
| ; Тест Бена Битбора для проверки интерпретатора | |
| ; на то, с каким порядком вычислений он работает , аппликативным или нормальным | |
| (define (p) (p)) | |
| (define (test x y) | |
| (if (= x 0) | |
| 0 | |
| y)) | |
| (test 0 (p)) | |
| ; В случае аппликативного порядка вычисления мы не войдем в процедуру test | |
| ; так-как не сможем вычислить рекурсивную процедуру p |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment