Re[4]: [C# 7] Design notes, Mar 18
От: samius Япония http://sams-tricks.blogspot.com
Дата: 19.05.15 18:05
Оценка: 34 (1) +1
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, AndrewVK, Вы писали:


AVK>>Не?

S>
S>static TReturn Using<TValue, TReturn>(Func<TValue> val, Func<TValue, TReturn> callback) {...}
S>

S>тогда уж.

S>Иначе первый же залетевший дятел одно исключение — и утёкший ресурс


S>UPD.

S>P.S. Кто сказал future монада?
S>
S>    public static Func<TReturn> Then<TValue, TReturn>(this Func<TValue> val, Func<TValue, TReturn> callback) { return () => callback(val()); }
S>...
S>        Func<string> a = () => Console.ReadLine();
S>        var b = a
S>            .Then(_ => int.Parse(_))
S>            .Then(_ => Math.Sqrt(_))
S>            .Then(_ => { Console.WriteLine(_); return _; });
S>        var c = b();
S>

Давно это было, вряд ли кто уж вспомнит.
Из F# спеки

Member Description
member Using : 'a * ('a -> M<'b>) -> M<'b> when 'a :> IDisposable Optional member. Used to de-sugar use bindings within computation expressions.
Construct De-sugared Form
use pat = expr in cexpr b.Using(expr, (fun pat -> cexpr))
use! pat = expr in cexpr b.Bind(expr, (fun x -> b.Using(x, fun pat -> cexpr))

S>P.P.S. Все вопросы "НО ЗАЧЕМ???" — к топикстартеру. Это ему нужны были юзинги в выражениях

Я такого не утверждал (что нужны). Я поинтересовался, была ли такая идея?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.