#lang scheme
(require (planet cce/scheme:4:1/planet)
(this-package-in main))
(provide in-list)
(provide/contract
[cons (-> any/c list? any)]
[empty empty?]
[first (-> cons? any)]
[rest (-> cons? list?)]
[list-ref (-> cons? natural-number/c any)]
[list-set (-> cons? natural-number/c any/c any)]
[cons? (-> any/c any)]
[empty? (-> any/c any)]
[list? (-> any/c any)]
[list (->* () () #:rest (listof any/c) any)]
[list* (->* (any/c) () #:rest (listof any/c) any)]
[length (-> list? any)]
[append (->* () () #:rest (listof list?) any)]
[reverse (-> list? any)]
[second (-> cons? any)]
[third (-> cons? any)]
[fourth (-> cons? any)]
[fifth (-> cons? any)]
[sixth (-> cons? any)]
[seventh (-> cons? any)]
[eighth (-> cons? any)]
[ninth (-> cons? any)]
[tenth (-> cons? any)]
[last (-> cons? any)]
[list-tail (-> list? natural-number/c any)]
[build-list (-> natural-number/c (-> natural-number/c any) any)]
[make-list (-> natural-number/c any/c any)]
[list-update (-> cons? natural-number/c (-> any/c any) any)]
[list-ref/update (-> cons? natural-number/c (-> any/c any) any)]
[list-ref/set (-> cons? natural-number/c any/c any)]
[map
(case-> (-> (-> any/c any) list? any)
(-> procedure? list? list?
#:rest (listof list?)
any))]
[andmap
(case-> (-> (-> any/c any) list? any)
(-> procedure? list? list?
#:rest (listof list?)
any))]
[ormap
(case-> (-> (-> any/c any) list? any)
(-> procedure? list? list?
#:rest (listof list?)
any))]
[foldr
(case-> (-> (-> any/c any/c any) any/c list? any)
(-> procedure? any/c list? list?
#:rest (listof list?)
any))]
[foldl
(case-> (-> (-> any/c any/c any) any/c list? any)
(-> procedure? any/c list? list?
#:rest (listof list?)
any))])