Skip to content

Nano framework which defines Haskell's undefined in Swift.

License

Notifications You must be signed in to change notification settings

a2/swift-undefined

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

undefined for Swift

Micro frameworks are popular now, so I'll go nano framework :-). This is all the code:

/**
 * `undefined()` pretends to be able to produce a value of any type `T` which can
 * be very useful whilst writing a program. It happens that you need a value
 * (which can be a function as well) of a certain type but you can't produce it
 * just yet. However, you can always temporarily replace it by `undefined()`.
 *
 * Inspired by Haskell's
 * [undefined](http://hackage.haskell.org/package/base-4.7.0.2/docs/Prelude.html#v:undefined).
 *
 * Invoking `undefined()` will crash your program.
 *
 * Some examples:
 *
 *  - `let x : String = undefined()
 *  - `let f : String -> Int? = undefined("string to optional int function")
 *  - `return undefined() /* in any function */`
 *  - `let x : String = (undefined() as Int -> String)(42)`
 *  - ...
 *
 * What a crash looks like:
 *
 * `fatal error: undefined: main.swift, line 131`
 *
 */
func undefined<T>(_ hint:String="", file:StaticString=__FILE__, line:UWord=__LINE__) -> T {
    let message = hint == "" ? "" : " \(hint)"
    fatalError("undefined\(message)", file:file, line:line)
}

More information

See my slides about undefined() from my Further Leveraging the Type System talk at Swift Summit 2015.

About

Nano framework which defines Haskell's undefined in Swift.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 100.0%