Starting where we left off:
#lang plait
(define-type Expr
[addE (e1 : Expr) (e2 : Expr)]
[numE (n : Number)]
)
;; 1. define frames, stacks, and states
(define-type Frame
[addF1 (e2 : Expr)]
[addF2 (n : Number)])
(define-type Stack
[emp]
[snoc (k : Stack) (f : Frame)])
(define-type State
[eval (k : Stack) (e : Expr)]
[return (k : Stack) (n : Number)])
;; example
(example1 : State)
(define example1
(eval (emp) (addE (addE (numE 1) (numE 2)) (numE 3))))
;; 2. Write step : State -> State
(step : (State -> State))
(define (step s) (error 'unimp ""))