quote : List Name -> Value -> Either Error (Expr Void)initCxt : Cxtcheck : Cxt -> Expr Void -> Value -> Either Error (Expr Void)returns the original `Expr Void` on success
infer : Cxt -> Expr Void -> Either Error (Expr Void, Value)returns a pair (Expr, Value), which is original Expr, and it's type as a Value
getHighestType : Foldable t => t Value -> U