-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathlambda.scm
More file actions
40 lines (30 loc) · 915 Bytes
/
lambda.scm
File metadata and controls
40 lines (30 loc) · 915 Bytes
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
38
39
40
(define-library
(lambda)
(import (scheme base))
(export lambda-application
lambda-argument
lambda-without-parameters
lambda-parameters-shadow-globals
inner-lambda-parameters-shadow-outer
lambda-procedure-result)
(begin
(define (lambda-application)
((lambda (x) (* x x)) 2))
(define (lambda-argument)
((lambda (n)
((lambda (fact n) (fact fact n))
(lambda (ft k) (if (= k 1) 1 (* k (ft ft (- k 1))))) n))
5))
(define (lambda-without-parameters)
((lambda () (+ 40 2))))
(define g 2)
(define h 3)
(define (lambda-parameters-shadow-globals)
((lambda (g) (+ g h)) 4))
(define (inner-lambda-parameters-shadow-outer)
((lambda (x) (+ 2 ((lambda (x) (* x x)) 3))) 4))
(define (doubler)
(lambda (x) (* 2 x)))
(define (lambda-procedure-result)
((doubler) 3)))
)