Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #lang eopl
- ;;<cola> ::= <cola-vacia>
- ;; ::= <cola-no-vacia> <cola> <int>
- ;;Procedimientos constructores
- (define cola-vacia
- (lambda ()
- (list 'cola-vacia)))
- (define cola-no-vacia
- (lambda (cola num)
- (list 'cola-no-vacia cola num)))
- ;;Procedimentos observadores
- ;;Predicados
- (define cola-vacia?
- (lambda (cola)
- (eqv? (car cola) 'cola-vacia)))
- (define cola-no-vacia?
- (lambda (cola)
- (eqv? (car cola) 'cola-no-vacia)))
- ;;Extractores
- (define cola-no-vacia->cola
- (lambda (cola)
- (cadr cola)))
- (define cola-no-vacia->valor
- (lambda (cola)
- (caddr cola)))
- ;;;Area del programador
- ;;;Ejemplos
- (define top
- (lambda (cola)
- (cond
- [(cola-vacia? (cola-no-vacia->cola cola))(cola-no-vacia->valor cola)]
- [(top (cola-no-vacia->cola cola))])))
- (define pop
- (lambda (cola)
- (cond
- [(cola-vacia? (cola-no-vacia->cola cola))(cola-vacia)]
- [(cola-no-vacia (pop (cola-no-vacia->cola cola))(cola-no-vacia->valor cola))])))
- (define suma
- (lambda (cola)
- (cond
- [(cola-vacia? (cola-no-vacia->cola cola))(cola-no-vacia->valor cola)]
- [(+ (cola-no-vacia->valor cola)(suma (cola-no-vacia->cola cola)))])))
- (define e(cola-no-vacia (cola-no-vacia
- (cola-no-vacia
- (cola-no-vacia (cola-vacia) 3)
- 4)
- 5)
- 6))
Add Comment
Please, Sign In to add comment