Yes, I was thinking something similar yesterday.  Such a pattern might well be 
perfect.



On Nov 14, 2011, at 11:40 PM, David Rajchenbach-Teller wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> On 11/15/11 12:47 AM, Niko Matsakis wrote:
>> 
>> On Nov 14, 2011, at 12:53 PM, Brian Anderson wrote:
>> 
>>> std has a 'result::t<T, U>' type that I am trying to use for this
>>> purpose. std::io makes use of this now.
>> 
>> Besides exceptions, I do not have a better alternative than
>> `std::result`.  However, I fear that if we go too far down this
>> style, it will very painful and we will find ourselves wishing for
>> syntactic sugar to support chaining (whether that is monads or
>> something else).  At least this has been my experience when working
>> in OCaml.
>> 
>> Are we sure that we do not want exceptions?
> 
> Actually, since we have `ret`, I'm sure that we can have small
> syntactic sugar without resorting to monads.
> 
> Assuming we have,
> 
> foo(x: str) -> result::t<T, U> { ... }
> 
> We could write
> 
> let x = #result[foo(y)]
> 
> And expand it to
> 
> let x = {
>  let __result = foo(y);
>  alt(__result) {
>    ok(z) { z }
>    err(_){
>       //Possibly add some logging here
>       ret __result
>    }
>  }
> }
> 
> In practice, this is already what happens in mozilla-central. Not
> ideal, but probably easier to sell to non-fp users as monads, and it
> takes advantage of `ret`. I wonder about performance, though. Is there
> a way that the compiler could recognize this pattern and somehow
> optimize it to attain the same kind of performance as exceptions?
> 
> Cheers,
> David
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.11 (Darwin)
> 
> iQEcBAEBAgAGBQJOwhdqAAoJED+FkPgNe9W+AMoH/i5scrjiLO2tyscpUcrc3+x5
> 682VB3aoKN30ddmZDWMbtFSDTMpRERfoNWlNIYtkL0fB5jnw+jyVibPIHzEzArsd
> p+VlXLicPizWHywvIKsNcIkJs2kcQOVP/GQ8BM3XccvnU4I17mYBRWWHsNLtQEFG
> YVNmHplLp3bSFORST+R9ZxG+ToTzmhPWCDWmqJECJnSkTj4owlyKd223XyqgYacG
> NV9eZFbfTTV94m7hgu9shSIWzfbV7KG2JLbGzMCFT1wb8AK6+uZvQohjXbAe+u9G
> yk6KGaoF4JDo02osH/cf9CY1t23sOBAHfzTfb8BKjnHF+pce6LrYa5gZTWGZ9c4=
> =87nd
> -----END PGP SIGNATURE-----
> 

_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to