aboutsummaryrefslogtreecommitdiff
path: root/Semestr 2/racket/lista6/zad11
diff options
context:
space:
mode:
Diffstat (limited to 'Semestr 2/racket/lista6/zad11')
-rw-r--r--Semestr 2/racket/lista6/zad11/solution.bak36
-rw-r--r--Semestr 2/racket/lista6/zad11/solution.rkt58
2 files changed, 0 insertions, 94 deletions
diff --git a/Semestr 2/racket/lista6/zad11/solution.bak b/Semestr 2/racket/lista6/zad11/solution.bak
deleted file mode 100644
index f449481..0000000
--- a/Semestr 2/racket/lista6/zad11/solution.bak
+++ /dev/null
@@ -1,36 +0,0 @@
-#lang racket
-
-(provide (struct-out const) (struct-out binop) rpn->arith)
-
-;; -------------------------------
-;; Wyrazenia w odwr. not. polskiej
-;; -------------------------------
-
-(define (rpn-expr? e)
- (and (list? e)
- (pair? e)
- (andmap (lambda (x) (or (number? x) (member x '(+ - * /))))
- e)))
-
-;; ----------------------
-;; Wyrazenia arytmetyczne
-;; ----------------------
-
-(struct const (val) #:transparent)
-(struct binop (op l r) #:transparent)
-
-(define (arith-expr? e)
- (match e
- [(const n) (number? n)]
- [(binop op l r)
- (and (symbol? op) (arith-expr? l) (arith-expr? r))]
- [_ false]))
-
-;; ----------
-;; Kompilacja
-;; ----------
-
-(define (rpn->arith e)
- (error "TODO: Uzupelnij tutaj"))
-
-; Mozesz tez dodac jakies procedury pomocnicze i testy \ No newline at end of file
diff --git a/Semestr 2/racket/lista6/zad11/solution.rkt b/Semestr 2/racket/lista6/zad11/solution.rkt
deleted file mode 100644
index a44afe4..0000000
--- a/Semestr 2/racket/lista6/zad11/solution.rkt
+++ /dev/null
@@ -1,58 +0,0 @@
-#lang racket
-
-(provide (struct-out const) (struct-out binop) rpn->arith)
-
-;; -------------------------------
-;; Wyrazenia w odwr. not. polskiej
-;; -------------------------------
-
-(define (rpn-expr? e)
- (and (list? e)
- (pair? e)
- (andmap (lambda (x) (or (number? x) (member x '(+ - * /))))
- e)))
-
-;; ----------------------
-;; Wyrazenia arytmetyczne
-;; ----------------------
-
-(struct const (val) #:transparent)
-(struct binop (op l r) #:transparent)
-
-(define (arith-expr? e)
- (match e
- [(const n) (number? n)]
- [(binop op l r)
- (and (symbol? op) (arith-expr? l) (arith-expr? r))]
- [_ false]))
-
-;; ----------
-;; Kompilacja
-;; ----------
-
-(struct stack (xs))
-
-(define empty-stack (stack null))
-(define (empty-stack? s) (null? (stack-xs s)))
-(define (top s) (car (stack-xs s)))
-(define (push a s) (stack (cons a (stack-xs s))))
-(define (pop s) (stack (cdr (stack-xs s))))
-
-(define (op->proc op)
- (match op ['+ +] ['- -] ['* *] ['/ /]))
-
-(define (eval-am e s)
- (cond [(null? e)
- (top s)]
- [(number? (car e))
- (eval-am (cdr e) (push (const (car e)) s))]
- [(symbol? (car e))
- (eval-am (cdr e)
- (push (binop (car e) (top (pop s)) (top s))
- (pop (pop s))))]))
-
-(define (rpn->arith e)
- (eval-am e empty-stack))
-
-
-; Mozesz tez dodac jakies procedury pomocnicze i testy \ No newline at end of file