Why does Rust have a "Never" primitive type?

Rust's std::process::exit has the type pub fn exit(code: i32) -> ! where ! is the "Never" primitive type. Why does Rust need a special type for this? Compare this with Haskell where the ty...