# SimpleRacketCalculator

Norman Mutunga
Dhvanil Patel
December 3, 2014

Overview : This is a simple calculator in post-fix run in GUI.

## Concepts Demonstrated

• We have used car and cdr to parse through a string in a stack .
• We also used cons to stitch up the car after evaluation into a string in the stack.
• We also used let* a meta-circular interpreter which is transformed into a lambda.
• GUI was used for the visual presentation of the calculator. Lambda was used extensively and in the simplified form λ (lambda ).
• Require racket/include was used to help link the two modules .

## External Technology and Libraries

This library helped in putting up a visual representation of the Simple Racket Calculator http://docs.racket-lang.org/gui/index.html

## Favorite Lines of Code

• Norman Mutunga:

This helps figure out the operation that was keyed in with the numbers and in what order.

``` [(op? (car expr)) ;; Figure out what type of operation it is + ,- ,/ ,*
(let* ([op (car expr)]
[rhs (car stack)]
[result ((op->procedure op) lhs rhs)]) ;; eval operation
(eval-rpn (cdr expr) (cons result (cddr stack))))] ;; push result; pop lhs/rhs
```
• Dhvanil Patel:
Making top-row and adding that to mathcalculator frame and the second one creating a button and adding that to toprow panel

(define top-row ( instantiate horizontal-panel% ()

```                   (parent mathcalculator )
(border 0 )
( alignment '(left top ))))
```

( instantiate button% ()

```   (label "+")
(min-width 50)
(min-height 50)

(callback ( lambda (button event)
(send top-row show #t)
(send display-window set-value "+")
(display "  Procedure: + "))))
```