small dynamic type system in swift
//playground for dynamic runtime system in swift
enum DynObject {
case int(Int)
case string(String)
case bool(Bool)
indirect case list([DynObject])
indirect case map([String:DynObject])
//multiple initializers for fast wrapping
init(element:Int) {
self = DynObject.int(element)
}
init(element:String) {
self = DynObject.string(element)
}
init(element:Bool) {
self = DynObject.bool(element)
}
init(element:[DynObject] = [DynObject]()) {
self = DynObject.list(element)
}
init(element:[String:DynObject] = [String:DynObject]()) {
self = DynObject.map(element)
}
}
func + (a:DynObject, b:DynObject) -> DynObject {
switch a {
case .int(let first):
switch b {
case .int(let second):
return DynObject(element:first + second)
default:
return DynObject(element:0)
}
default:
return DynObject(element:0)
}
}
var a = DynObject(element:4)
var b = DynObject(element:3)
a + b
//7