Advertisement
Guest User

Untitled

a guest
May 28th, 2018
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 0.83 KB | None | 0 0
  1. (define-signature bag^
  2.   ((contracted
  3.     [bag?       (-> any/c boolean?)]
  4.     [empty-bag  (and/c bag? bag-empty?)]
  5.     [bag-empty? (-> bag? boolean?)]
  6.     [bag-insert (-> bag? any/c (and/c bag? (not/c bag-empty?)))]
  7.     [bag-peek   (-> (and/c bag? (not/c bag-empty?)) any/c)]
  8.     [bag-remove (-> (and/c bag? (not/c bag-empty?)) bag?)])))
  9.  
  10. ;;STOS
  11. (define-unit bag-stack@
  12.   (import)
  13.   (export bag^)
  14.   ;;BAG?
  15.   (define (bag? stack)
  16.     (list? stack))
  17.          
  18.   ;;EMPTY
  19.   (define (bag-empty? stack)
  20.     (null? stack))
  21.  
  22.   ;;EMPTY-BAG
  23.   (define empty-bag
  24.     null)
  25.  
  26.   ;;PUSH
  27.   (define (bag-insert stack element)
  28.     (cons element stack))
  29.  
  30.   ;;POP
  31.   (define (bag-remove stack)
  32.     (if (bag-empty? stack)
  33.         (error "stos jest pusty!")
  34.         (cdr stack)))
  35.  ;;PEEK
  36.   (define (bag-peek stack)
  37.     (car stack))
  38. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement