;; Kathi Fisler
;; Powerpoint exercise
;; Stage 0 : Data definitions and sample slideshow
;; September 22, 2008

;;;;;;;;;;;; THE DATA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; a slide is a (make-slide string slide-body)
(define-struct slide (title body))

;; a slide-body is either
;;  - a string (paragraph), or
;;  - a (make-pointlist list[string] boolean)
(define-struct pointlist (points numbered?))

;; A cmd is 
;; - (make-display slide)
(define-struct display (slide))

;; A talk is a (make-talk list[cmd])
(define-struct talk (cmds))

;; A program in this language is just a talk

(define talk1
  (let ([intro-slide
         (make-slide 
          "Hand Evals in DrScheme"
          "Hand evaluation helps you learn how Scheme reduces programs to values")]
        [arith-eg-slide
         (make-slide 
          "Example 1"
          (make-pointlist (list "(+ (* 2 3) 6)" "(+ 6 6)" "12") false))]
        [func-eg-slide
         (make-slide 
          "Example 2"
          (make-pointlist (list "(define (foo x) (+ x 3))" "(* (foo 5) 4)" "(* (+ 5 3) 4)" "(* 8 4)"
                                "32") false))]
        [summary-slide
         (make-slide
          "Summary: How to Hand Eval"
          (make-pointlist (list "Find the innermost expression"
                                "Evaluate one step"
                                "Repeat until have a value")
                          true))])
    (make-talk
     (list (make-display intro-slide)
           (make-display arith-eg-slide)
           (make-display func-eg-slide)
           (make-display summary-slide)))))

