     transformer.rule(["a": .simple("a"), "b": .simple("b"), "op": .literal("-")]) {
         try Minus(first: $0.val("a"), second: $0.val("b"))
     }
-    
+
     transformer.rule(["a": .simple("a"), "b": .simple("b"), "op": .literal("*")]) {
         try Times(first: $0.val("a"), second: $0.val("b"))
     }
-    
+
+    transformer.rule(["a": .simple("a"), "b": .simple("b"), "op": .literal("/")]) {
+        try Divide(first: $0.val("a"), second: $0.val("b"))
+    }
+
     return transformer
 }

    let transformer = Transformer<Expr>()

    transformer.rule(["n": .simple("n")]) {
        guard let int = Int(try $0.val("n")) else { throw ExprError.notAConstant }
        return Num(value: int)
    }
    
    transformer.rule(["a": .simple("a"), "b": .simple("b"), "op": .literal("+")]) {

import Syft

protocol Expr {
    func evaluate() -> Double
}

struct Num: Expr {
    let value: Double
    
    func evaluate() -> Double {
        return value
    }
}
