aboutsummaryrefslogtreecommitdiff
path: root/semestr-2/racket/lista6/zad11/solution.bak
diff options
context:
space:
mode:
Diffstat (limited to 'semestr-2/racket/lista6/zad11/solution.bak')
-rw-r--r--semestr-2/racket/lista6/zad11/solution.bak36
1 files changed, 36 insertions, 0 deletions
diff --git a/semestr-2/racket/lista6/zad11/solution.bak b/semestr-2/racket/lista6/zad11/solution.bak
new file mode 100644
index 0000000..f449481
--- /dev/null
+++ b/semestr-2/racket/lista6/zad11/solution.bak
@@ -0,0 +1,36 @@
+#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