;; The first three lines of this file were inserted by DrRacket. They record metadata
;; about the language level of this file in a form that our tools can easily process.
#reader(lib "htdp-intermediate-lambda-reader.ss" "lang")((modname 28.8.1) (read-case-sensitive #t) (teachpacks ()) (htdp-settings #(#t constructor repeating-decimal #f #t none #f ())))
; Worked exercise 28.8.1

; make-adder : number -> (number -> number)

(define (make-adder num)
  ; num       number
  (lambda (x) (+ x num)))

; Alternative version with local instead of lambda:
;(define (make-adder num)
;  ; num       number
;  (local [(define (addnum x) (+ x num))]
;    addnum))

(define add2 (make-adder 2))
(define add5 (make-adder 5))
(check-expect (add2 4) 6)
(check-expect (add2 27) 29)
(check-expect (add5 4) 9)
(check-expect (add5 27) 32)
(check-expect ((make-adder 3) 2) 5)
