;; 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 snake) (read-case-sensitive #t) (teachpacks ()) (htdp-settings #(#t constructor repeating-decimal #f #t none #f ()))) ; A snake is ; (make-snake string num string) (define-struct snake (name weight food)) ; snake-skinny? : snake -> bool ; To determine whether s is strictly less than 10 pounds ;(define (snake-skinny? s) ; ... (snake-name s) ... (snake-weight s) ... (snake-food s) ...) (define (snake-skinny? s) (< (snake-weight s) 10)) (check-expect (snake-skinny? (make-snake "Slinky" 10 "rats")) false) (check-expect (snake-skinny? (make-snake "Slimey" 8 "grass")) true) (check-expect (snake-skinny? (make-snake "Bruno" 20 "pizza")) false) ; feed-snake : snake -> snake ; To feed s 5 pounds of feed ;(define (feed-snake s) ; ... (snake-name s) ... (snake-weight s) ... (snake-food s) ...) (define (feed-snake s) (make-snake (snake-name s) (+ 5 (snake-weight s)) (snake-food s))) (check-expect (feed-snake (make-snake "Slinky" 10 "rats")) (make-snake "Slinky" 15 "rats")) (check-expect (feed-snake (make-snake "Slimey" 8 "grass")) (make-snake "Slimey" 13 "grass"))