-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path01.rkt
More file actions
37 lines (30 loc) · 1.65 KB
/
Copy path01.rkt
File metadata and controls
37 lines (30 loc) · 1.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#lang sicp
(#%require rackunit)
; Чтобы применить процедуру к аргументам, требуется вычислить тело процедуры каждый параметр соответствующим аргументом
; Восстановим тело функции sum-of-squares из прошлого раздела
; (sum-of-squares 3 4)
; (+ (square 3) (square 4)))
; (+ (* 3 3) (* 4 4))
; (+ (9) (16))
; 25
; Этот процесс называется подстановочной моделью
; Пример из книги
; Апликативный порядок вычислений. Вычисление аргументов, затем применение процедуры
; (f 5) // f - это процедура
; (sum-of-squares (+ a 1) (* a 2)) // восстанавливаем тело f
; (sum-of-squares (+ 5 1) (* 5 2)) // заменяем параметр a на аргумент 5
; (sum-of-squares 6 10) // далее раскрываем sum-of-squares
; (+ (square 6) (square 10))) // раскрываем square
; (+ (* 6 6) (* 10 10)) // раскрываем square
; (+ 36 100)
; 136
; Нормальный порядок вычислений, здесь сначала определятся значения которые можно вычислить, затем редукция
; (f 5)
; (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)
; 136
; В лиспе используется апликативный порядок вычислений процедур