Size: a a a

2021 January 13

VS

Vasily Shapenko in F# Chat
Это часть синтакса  while
источник

VL

Vladimir Lozhnikov in F# Chat
не. я про тот, который перед while
источник

VS

Vasily Shapenko in F# Chat
Не нужен
источник

VL

Vladimir Lozhnikov in F# Chat
может, потому что конструкция (while…) внутри скобок объявлена?
источник

VS

Vasily Shapenko in F# Chat
Ну вот непонятно зачем, опять же
источник

VL

Vladimir Lozhnikov in F# Chat
типа как анонимная функция получается. и do нужен, чтобы ее запустить
источник

VS

Vasily Shapenko in F# Chat
Кто-то строки экономил
источник

VL

Vladimir Lozhnikov in F# Chat
хм
источник

VL

Vladimir Lozhnikov in F# Chat
вот полный кот

type MutablePair<'T, 'U>(x : 'T, y : 'U) =
   let mutable currentX = x
   let mutable currentY = y
   member p.Value = (currentX, currentY)
   member p.Update(x, y) =
       // Race condition: This pair of updates is not atomic
       currentX <- x
       currentY <- y

let p = new MutablePair<_, _>(1, 2)
do Async.Start (async {do (while true do p.Update(10, 10))})
do Async.Start (async {do (while true do p.Update(20, 20))}
источник

VL

Vladimir Lozhnikov in F# Chat
вот первый do не понятно нафига. второй наверное понятно
источник

((

(fun () -> ()) in F# Chat
Vladimir Lozhnikov
вот первый do не понятно нафига. второй наверное понятно
ну второй точно понятно - это часть while exp do
источник

VL

Vladimir Lozhnikov in F# Chat
не не не. я про этот do

do (while true do ..) // который в самом начале. он не часть синтаксиса while
источник

((

(fun () -> ()) in F# Chat
только непонятно тогда почему там 1 do, вроде правильно было бы
while true do 
   do! p.Update(10,10)
источник

VL

Vladimir Lozhnikov in F# Chat
я так понимаю, что так как while обернут в скобки, то это получается анонимная функция, которая сама не запускается. а do нужен, чтобы ее запустить
источник

VL

Vladimir Lozhnikov in F# Chat
(fun () -> ())
только непонятно тогда почему там 1 do, вроде правильно было бы
while true do 
   do! p.Update(10,10)
там там Update не асинхронная. поэтому do! это будет ошибка
источник

((

(fun () -> ()) in F# Chat
Vladimir Lozhnikov
там там Update не асинхронная. поэтому do! это будет ошибка
а смысл тогда от этой конструкции вообще?
источник

VL

Vladimir Lozhnikov in F# Chat
это пример, который показывает проблему расшаренной памяти при асинхронном программировании
источник

VL

Vladimir Lozhnikov in F# Chat
а вот как она решается

do Async.Start (async { do (while true do lock p (fun () -> p.Update(10,10))) })
do Async.Start (async { do (while true do lock p (fun () -> p.Update(20,20))) }

но меня заинтересовали первый do, нафига он
источник

VL

Vladimir Lozhnikov in F# Chat
а, возможно Async.Start не запускается сам по себе и возвращает таск, который запускается через do.
источник

g

gsomix in F# Chat
источник