Type Driven Development in Swift. Ideas for designing programs type-first and leveraging the power of the type system in the Swift programming language.
BAD EXAMPLE struct BookStatusBad { let available : Bool let lost : Bool let lentTo : Person? } illegal values: let ill1 = BookStatusBad(available: true, lost: true, lentTo: TimCook) let ill2 = BookStatusBad(available: true, lost: false, lentTo: TimCook) let ill3 = BookStatusBad(available: false, lost: false, lentTo: nil)
UNDEFINED CAN FILL HOLES func undefined(_ message:String="") -> T { fatalError("undefined \(message)") } Can be used for simple things like let a : String = undefined("special string") let b : Int = undefined("some int") let t = NSTimer(timeInterval: undefined(), target: undefined(), selector: undefined(), userInfo: undefined(), repeats: undefined())