News for hackers. Stuff that matters.
Re:Java 8’s new Optional type doesn't solve anything by danieldk on Monday October 26, 2015 @07:55AM (#10450775)
Allowing unsafe unwraps defeats a core purpose of rust,

Definitely, but you can also still do this in Haskell (fromJust). But it's better than nullable types since you explicitly have call an unsafe method. (Assuming that you have set non-exhaustive pattern matching to be a warning/error.)

Re:Java 8’s new Optional type doesn't solve anything by steveklabnik on Monday October 26, 2015 @09:19AM (#10451175)
unwrap() is not unsafe in Rust, and I don't think Haskell has anything similar?
Re:Java 8’s new Optional type doesn't solve anything by danieldk on Monday October 26, 2015 @09:53AM (#10451397)
Sorry for the confusion! I meant 'unsafe' as in partial (not safe for all inputs). Not as in Rust's unsafe keyword.
Re:Java 8’s new Optional type doesn't solve anything by steveklabnik on Monday October 26, 2015 @09:58AM (#10451422)
Ah, right. It's really important in the context of Rust. :) People sometimes claim that unwrap() violates memory safety, which isn't true.
Re:Java 8’s new Optional type doesn't solve anything by codygman on Monday October 26, 2015 @08:49PM (#10455496)
The definition in Rust's documentation[0] was this:

    let x: Option<&str> = None;
    assert_eq!(x.unwrap(), "air"); // fails
The equivalent Haskell if unwrap throws a panic as the docs[0] seem to imply:

    λ> fromMaybe (error "panic!") Nothing
    *** Exception: panic!
You could also do something like this if you don't mind dealing with the wrapped boolean value:

    λ> fmap (== "air") (Just "air")
    Just True
and the failure case:

    λ> fmap (== "air") (Nothing)
    Nothing 
0: https://doc.rust-lang.org/std/option/enum.Option.html#method...
Re:Java 8’s new Optional type doesn't solve anything by steveklabnik on Tuesday October 27, 2015 @08:43AM (#10457591)
Right, but it's still not unsafe. The stack unwinds, destructors get called.

And I meant some notion of 'safety', not fromMaybe/fromJust.