Problem 2: Slice (100 pts)

Write a function slice which takes in a stream s, a non-negtive integer start, and a non-negtive integer end. It should return a Scheme list that contains the elements of s between index start and end, not including end. If the stream ends before end, you can return the whole part after start; if the stream ends before start, return nil. You can assume end may not less than start.

(define (slice s start end)
  'YOUR-CODE-HERE
)

;;; Tests
; scm> (define nat (naturals 0)) ; See naturals procedure defined earlier
; nat
; scm> (slice nat 4 12)
; (4 5 6 7 8 9 10 11)
; scm> (define a (cons-stream 1 (cons-stream 2 nil)))
; a
; scm> (slice a 1 114514)
; (2)