jweinst1
7/13/2016 - 5:40 PM

small dynamic type system in swift

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