Size: a a a

2020 June 23

S

S.Mahdi | Unknown Pl... in F# Chat
Roman Melnikov
You can use elmish bridge (see examples, google keywords "f# elmish bridge")
Or, you can try Reaction (google keywords "f# reaction server middleware").
Or you can use websockets as you use them usual via C#
I tried many approaches but WebSocketed is must straightforward for F#

https://github.com/joewalnes/websocketd
источник

АВ

Андрей Вилинский... in F# Chat
никто не делал expiringMemo в гопаке? чую в две строчки, но получается больше и не работает
источник

VS

Vasily Shapenko in F# Chat
источник

AH

Ayrat Hudaygulov in F# Chat
Андрей Вилинский
никто не делал expiringMemo в гопаке? чую в две строчки, но получается больше и не работает
Типа сбрасывающийся промиз? Не делал, но должно быть в две строчки, да
источник

АВ

Андрей Вилинский... in F# Chat
ага, токен надо рефрешить, если протух
источник

АВ

Андрей Вилинский... in F# Chat
первый отрезок времени мемо, потом не мемо, чяднт?

let rec nonExpiring (getToken : Alt<string * System.DateTime>) =
   memo getToken
   |> Alt.afterJob (fun (token, expiresAt) ->
       if expiresAt > System.DateTime.UtcNow then Alt.always token
       else nonExpiring getToken
   )

module Test =
 let getToken =
   Alt.always()
   |> Alt.afterFun(fun() ->
     let now = System.DateTime.UtcNow
     printfn "get token at %A" now
     let time = System.TimeSpan.FromSeconds 5.0
     "token", now + time
   )
   |> nonExpiring
 getToken |> run
источник

AH

Ayrat Hudaygulov in F# Chat
Андрей Вилинский
ага, токен надо рефрешить, если протух
а, делал
источник

AH

Ayrat Hudaygulov in F# Chat
чот не нашёл исходников как я делал, но мысль такая (я делал очень тупо)

Есть класс.
Внутри MVar токена, который наружу торчит как Alt (чтобы не ломились его изменять)

Есть метод, который читает токен, а если он протух, рефрешит его и отдаёт.
источник

VK

Vladislav Khapin in F# Chat
Ayrat Hudaygulov
чот не нашёл исходников как я делал, но мысль такая (я делал очень тупо)

Есть класс.
Внутри MVar токена, который наружу торчит как Alt (чтобы не ломились его изменять)

Есть метод, который читает токен, а если он протух, рефрешит его и отдаёт.
А как кстати как альт выставить?
источник

AH

Ayrat Hudaygulov in F# Chat
Vladislav Khapin
А как кстати как альт выставить?
апкаст
источник

AH

Ayrat Hudaygulov in F# Chat
хоп хей лалалей
источник

VK

Vladislav Khapin in F# Chat
логично
источник

AH

Ayrat Hudaygulov in F# Chat
Vladislav Khapin
А как кстати как альт выставить?
                           Job<_>
                           |
                          Alt<_>
                           |
     +-------+--------+----+-----+--------+--------+
     |       |        |          |        |        |
    Ch<_>  Latch   Mailbox<_>  MVar<_>  Proc   Promise<_>
                                                   |
                                                 IVar<_>
источник

AH

Ayrat Hudaygulov in F# Chat
Всё кроме джобы - альт
источник

АВ

Андрей Вилинский... in F# Chat
наговнякал, сначала с классом, потом без - 10 строк вместо двух но пашет

let nonExpiring =
 let cache = MVar(("", DateTime.UtcNow))
 fun (getToken : Alt<string * DateTime>) ->
   cache
   |> MVar.read
   |> Alt.afterJob(fun(token, expiresAt) ->
     if expiresAt > DateTime.UtcNow then
       Alt.always token
     else
       cache |> MVar.modifyJob(fun _ -> getToken |> Alt.afterFun(fun a -> a, fst a))
   )
источник

AH

Ayrat Hudaygulov in F# Chat
Ну да, похоже
источник
2020 June 24

IB

Ivan Balanar in F# Chat
Т.к. листы в F# иммутейбл, нет ли каких-нибудь оптимизаций при конкатенации двух листов, которые эффективно предотвращают выделение памяти под копию суммы листов?
источник

VS

Vasily Shapenko in F# Chat
С чего ты взял, что там будет выделение памяти?
источник

VS

Vladimir Shchur in F# Chat
да, там не будет копии листов
источник

IC

Ilya L Che in F# Chat
Смотря как складывать же :D
источник