(define (s) (append (np) (vp))) (define (np) (case (random 2) ((0) (pn)) ((1) (append (det) (cn))))) (define (pn) (case (random 6) ((0) '(john)) ((1) '(mary)) ((2) '(frog)) ((3) '(toad)) ((4) '(alice)) ((5) '(bob)))) (define (det) (case (random 4) ((0) '(a)) ((1) '(the)) ((2) '(every)) ((3) (append (np) '(s))))) (define (cn) (case (random 4) ((0) '(cake)) ((1) '(ball)) ((2) '(book)) ((3) (append (adj) (cn))))) (define (adj) (case (random 3) ((0) '(beautiful)) ((1) '(big)) ((2) (append '(very) (adj))))) (define (vp) (case (random 2) ((0) (iv)) ((1) (append (tv) (np))))) (define (iv) (case (random 4) ((0) '(slept)) ((1) '(ate)) ((2) '(shined)) ((3) '(smelled)))) (define (tv) (case (random 4) ((0) '(made)) ((1) '(ate)) ((2) '(saw)) ((3) '(smelled))))