;; 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-beginner-reader.ss" "lang")((modname 21.4.1) (read-case-sensitive #t) (teachpacks ()) (htdp-settings #(#t constructor repeating-decimal #f #t none #f ()))) ; Worked exercise 21.4.1 ; An employee has three parts: name, id, and salary. ; The name is a string, while id and salary are numbers. (define-struct employee (name id salary)) ; make-employee : string(name) number(id) number(salary) -> employee ; employee-name : employee -> string ; employee-id : employee -> number ; employee-salary : employee -> number ; employee? : anything -> boolean (define emp1 (make-employee "Bob" 470 36000)) (define emp2 (make-employee "Chris" 471 41000)) #| ; function-on-employee : a template for functions that take in an employee (check-expect (function-on-employee emp1) ...) (check-expect (function-on-employee (make-employee "Joe" 348 42995)) ...) (define (function-on-employee emp) ; emp an employee ; (employee-name emp) a string ; (employee-id emp) a number ; (employee-salary emp) a number ... ) ; function-returning-employee : a template for functions that return an employee (check-expect (function-returning-employee ...) emp1) (check-expect (function-returning-employee ...) (make-employee "Joe" 348 42995)) (define (function-returning-employee ...) (make-employee ... ... ...) ; name, id, salary in that order ) |# ; earns-over-100k? : employee -> boolean (check-expect (earns-over-100k? emp1) false) (check-expect (earns-over-100k? (make-employee "Joe" 348 42995)) false) (check-expect (earns-over-100k? (make-employee "Phil" 27 119999)) true) (check-expect (earns-over-100k? (make-employee "Anne" 51 100000)) false) (define (earns-over-100k? emp) ; emp an employee ; (employee-name emp) a string ; (employee-id emp) a number ; (employee-salary emp) a number ; 100000 a fixed number (> (employee-salary emp) 100000) )