-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathcourse.rkt
51 lines (38 loc) · 1.61 KB
/
course.rkt
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
41
42
43
44
45
46
47
48
49
50
51
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CourseGrid:course.rkt ;;
;; ;;
;; Purpose: Object for storing data about a given course. ;;
;; ;;
;; Author: Willie Boag [email protected] ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#lang racket
(provide make-course)
(provide course-name course-number course-url course-level)
(provide display-c displayln-c)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Course Object ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; constructor
(define (make-course name number url level)
(lambda (message)
(cond
((eq? message 'name ) name)
((eq? message 'number) number)
((eq? message 'url ) url)
((eq? message 'level ) level)
(else
(error "Method not available for course object")))))
; accessors
(define (course-name c) (c 'name ))
(define (course-number c) (c 'number))
(define (course-url c) (c 'url ))
(define (course-level c) (c 'level ))
; display object
(define (display-c c)
(displayln (list (course-name c)
(course-number c)
(course-url c)
(course-level c))))
(define (displayln-c c)
(display-c c)
(newline))