Size: a a a

2020 July 18

VA

Vagif Abilov in F# Chat
Ayrat Hudaygulov
классы в интерфейсы кастуются и flexible types есть
Ну он оговорился, что не всегда. У многих, переходящих с сшарпа, вызывает удивление необходимость указывать тип при конверсии, он об этом.
источник

VA

Vagif Abilov in F# Chat
Ayrat Hudaygulov
классы в интерфейсы кастуются и flexible types есть
Про flexible types не знал.
источник

VA

Vagif Abilov in F# Chat
Traveller Kolsky
Забавный пост. То, что является косяками системы, преподносят как фичи.
Ну насчёт implicit conversion ещё могут быть разные мнения. Но что из остальных четырех пунктов можно назвать косяком?
источник

TK

Traveller Kolsky in F# Chat
mutable by default это очень неудобно;
Void слабее, чем Unit;
Ранние возвраты можно осуществлять, хоть и хитрыми способами, да и не так сильно они нужны;
Опущенный результат возврата должен варниться компилятором, если варнинги можно отключить или использовать ignore, то неявное игнорирование результата может привести к багам и недопониманию.
источник

Г

Герман in F# Chat
под 3 можно подогнать отсутствие break в while/for
источник

Г

Герман in F# Chat
а void вообще по типо-теоретическим причинам вредный
источник

VS

Vladimir Shchur in F# Chat
Ayrat Hudaygulov
О, классы не только в интерфейсы, но и вообще в наследника кастуются имплиситно
type Base() = class end
type Derived() = inherit Base()
 
let foo (a: Derived): Base = a // нельзя без явного каста
let bar (a: Base) = ()
bar (Derived()) // изи, компилятору похер
это кстати правильно сделано, соответствует букве L из солида
источник

((

(fun () -> ()) in F# Chat
как стартануть Async с cancellationToken и дождаться результата?
источник

VS

Vladimir Shchur in F# Chat
Async.StartAsTask
источник

((

(fun () -> ()) in F# Chat
а потом AwaitTask?
источник

VS

Vladimir Shchur in F# Chat
не, если тебе эвэйтить тоже в асинке нужно, то стартовать тебе не нужно внутренний
источник

VS

Vladimir Shchur in F# Chat
стартуешь ты всегда самый верхний
источник

VS

Vladimir Shchur in F# Chat
и в верхнем указываешь канселейшн, дочерним он автоматом передастся
источник

((

(fun () -> ()) in F# Chat
спасибо
источник

VA

Vagif Abilov in F# Chat
Traveller Kolsky
mutable by default это очень неудобно;
Void слабее, чем Unit;
Ранние возвраты можно осуществлять, хоть и хитрыми способами, да и не так сильно они нужны;
Опущенный результат возврата должен варниться компилятором, если варнинги можно отключить или использовать ignore, то неявное игнорирование результата может привести к багам и недопониманию.
Ну вот это все мне кажется важным для парадигмы языка.
источник

AH

Ayrat Hudaygulov in F# Chat
(fun () -> ())
как стартануть Async с cancellationToken и дождаться результата?
Там все Start* принимают дефолтный токен. Если ты его не передаешь, он имплиситный
источник

AH

Ayrat Hudaygulov in F# Chat
Traveller Kolsky
mutable by default это очень неудобно;
Void слабее, чем Unit;
Ранние возвраты можно осуществлять, хоть и хитрыми способами, да и не так сильно они нужны;
Опущенный результат возврата должен варниться компилятором, если варнинги можно отключить или использовать ignore, то неявное игнорирование результата может привести к багам и недопониманию.
Mutable by default это супер удобно. Мутабельность гораздо реже нужна
источник

TK

Traveller Kolsky in F# Chat
Ага, и поэтому везде приходится явно писать { get; private set; } или readonly, когда по-хорошему надо их поощрять
источник

AH

Ayrat Hudaygulov in F# Chat
Traveller Kolsky
Ага, и поэтому везде приходится явно писать { get; private set; } или readonly, когда по-хорошему надо их поощрять
Ой, сори. Я тебя не так прочитал и потом неправильно написал
источник

AH

Ayrat Hudaygulov in F# Chat
Я топлю за immutable by default
источник