Size: a a a

F# Flood: всем по тайпклассу

2020 April 06

VK

Vladislav Khapin in F# Flood: всем по тайпклассу
Ayrat Hudaygulov
Ну там написано что он сделал аналог зио
Хех
источник

AH

Ayrat Hudaygulov in F# Flood: всем по тайпклассу
Кстати, я не знал что у нас так работает инфиренс

let foo env = // env :> IDb and env :> ILog
   let user = Db.fetchUser env 123 // env :> IDb
   Log.debug env "User: %A" user // env :> ILog
источник

AH

Ayrat Hudaygulov in F# Flood: всем по тайпклассу
Что констрейны интерфейсов композятся. Прикольно
источник

VK

Vladislav Khapin in F# Flood: всем по тайпклассу
Ayrat Hudaygulov
Что констрейны интерфейсов композятся. Прикольно
Ну это логично раз так можно
источник

VK

Vladislav Khapin in F# Flood: всем по тайпклассу
У нас
источник

AH

Ayrat Hudaygulov in F# Flood: всем по тайпклассу
Vladislav Khapin
Ну это логично раз так можно
Ну хз. Я вот думал он констрейн выведет по первому применению
источник

AH

Ayrat Hudaygulov in F# Flood: всем по тайпклассу
Но вот теперь когда я это вижу, думаю что логично что он их композит. Ведь интерфейсы позволяют множественное наследование.
источник

AH

Ayrat Hudaygulov in F# Flood: всем по тайпклассу
Короче, интересная фишка
источник

RM

Roman Melnikov in F# Flood: всем по тайпклассу
и эффекты заюзали?
источник

R

Roman in F# Flood: всем по тайпклассу
Roman Melnikov
и эффекты заюзали?
какие? В каком виде?
источник

RM

Roman Melnikov in F# Flood: всем по тайпклассу
Roman
какие? В каком виде?
в том что в статье
источник

R

Roman in F# Flood: всем по тайпклассу
Ayrat Hudaygulov
Кстати, я не знал что у нас так работает инфиренс

let foo env = // env :> IDb and env :> ILog
   let user = Db.fetchUser env 123 // env :> IDb
   Log.debug env "User: %A" user // env :> ILog
можно кстати композировать такие констрейнты руками, если надо, через тайп алиасы:
type IOne = abstract member One: string
type ITwo = abstract member Two: string

type Oba<'a when 'a :> IOne and 'a: ITwo> = 'a

let func (x : 'a Oba) = ...
источник

AH

Ayrat Hudaygulov in F# Flood: всем по тайпклассу
Roman
можно кстати композировать такие констрейнты руками, если надо, через тайп алиасы:
type IOne = abstract member One: string
type ITwo = abstract member Two: string

type Oba<'a when 'a :> IOne and 'a: ITwo> = 'a

let func (x : 'a Oba) = ...
Руками, то понятно
источник

AH

Ayrat Hudaygulov in F# Flood: всем по тайпклассу
Я удивлен что инфиренс на такое способен
источник

R

Roman in F# Flood: всем по тайпклассу
Roman Melnikov
в том что в статье
дак нет же, там эффекты в ридер монаде, а мы пошли путем AppEnv
источник

SN

Shub Niggurath in F# Flood: всем по тайпклассу
Denis Bobrov
Т е можно на эрланге но лучше на эликсире
лучше на эрланге
источник

R

Roman in F# Flood: всем по тайпклассу
Shub Niggurath
лучше на эрланге
какие ваши аргументы?
источник

Y

Yaroslav in F# Flood: всем по тайпклассу
Подскажите пжст
Есть ли какой то аналог раскрытия option в FSharp подобно null-conditional operator в CSharp ?
источник

DB

Denis Bobrov in F# Flood: всем по тайпклассу
я не знаю csharp, но мб Option.defaultValue
источник

DB

Denis Bobrov in F# Flood: всем по тайпклассу
Shub Niggurath
лучше на эрланге
ну хз, мои знакомые питонисты которые пишут на эрланге (лол) говорят что пишут на эликсире а голым эрлангом добивают там где не получается и/или нужен перфоманс
источник