Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (define-signature bag^
- ((contracted
- [bag? (-> any/c boolean?)]
- [empty-bag (and/c bag? bag-empty?)]
- [bag-empty? (-> bag? boolean?)]
- [bag-insert (-> bag? any/c (and/c bag? (not/c bag-empty?)))]
- [bag-peek (-> (and/c bag? (not/c bag-empty?)) any/c)]
- [bag-remove (-> (and/c bag? (not/c bag-empty?)) bag?)])))
- ;;STOS
- (define-unit bag-stack@
- (import)
- (export bag^)
- ;;BAG?
- (define (bag? stack)
- (list? stack))
- ;;EMPTY
- (define (bag-empty? stack)
- (null? stack))
- ;;EMPTY-BAG
- (define empty-bag
- null)
- ;;PUSH
- (define (bag-insert stack element)
- (cons element stack))
- ;;POP
- (define (bag-remove stack)
- (if (bag-empty? stack)
- (error "stos jest pusty!")
- (cdr stack)))
- ;;PEEK
- (define (bag-peek stack)
- (car stack))
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement