Size: a a a

2020 July 02

MK

Maxim Koltsov in Haskell
Может race из пакета async поможет?
источник

AV

Alexander Vershilov in Haskell
Aminion
Как сделать threadDelay, но с возможностью отмены ожидания? В голову приходит сделать две задачи, дилея, и скажем, проверки MVar, ловить первую завершившуюся, но как это реализовать?
registerDealy
источник

A

Aminion in Haskell
Maxim Koltsov
Может race из пакета async поможет?
хм, выглядит как то что нужно пока, спасибо
источник

AV

Alexander Vershilov in Haskell
источник

AV

Alexander Vershilov in Haskell
cancelled <- newTVarIO False
x <- registerDelay 1000
...
atomically $
 asum
   [ readTVar x >>= check
    , readTVar cancelled >>= check
    ]
источник

AV

Alexander Vershilov in Haskell
Но check выпилят когда-нибудь, так что надо \x -> when x retry вместо него
источник

A

Aminion in Haskell
хм, или так, да, попробую
источник

AV

Alexander Vershilov in Haskell
если нужно знать отменили или делать действие, то:
join $ atomically $ asum
   [ readTVar x >>= check >> pure f
   , readTVar cancelled >>= check >> pure (pure ())
   ]
источник

A

Aminion in Haskell
Alexander Vershilov
Но check выпилят когда-нибудь, так что надо \x -> when x retry вместо него
почему выпилият то?
источник

AV

Alexander Vershilov in Haskell
Aminion
почему выпилият то?
У него проблемы с семантикой, он делает больше, чем проверку условия
источник

AV

Alexander Vershilov in Haskell
вообще странно, сейчас реализован так, щас найду тред в треккере
источник

AV

Alexander Vershilov in Haskell
источник

AV

Alexander Vershilov in Haskell
The proposal has been accepted. I will add the appropriate deprecation pragmas in base-4.11.0.0 noting that removal will happen in three releases (presumably GHC 8.10).
источник

AV

Alexander Vershilov in Haskell
а не только always и alwaysSucceeds убрали, check остаётся
источник

JS

Jerzy Syrowiecki in Haskell
check = guard, судя по исходникам
источник

а

а это кто in Haskell
Если Haskell полностью преобразуется в форму лямбда исчисления,то как преобразуется такой кусок кода?

func a =
   let b = a * 2 in
   let c = b * 3 in
   (b + c, b - c)


это будет

func = \a ->
   ((a * 2) + (b * 3), (a * 2) - (b * 3))


?мне интересно именно как конструкция "let in" раскрывается
источник

JS

Jerzy Syrowiecki in Haskell
а это кто
Если Haskell полностью преобразуется в форму лямбда исчисления,то как преобразуется такой кусок кода?

func a =
   let b = a * 2 in
   let c = b * 3 in
   (b + c, b - c)


это будет

func = \a ->
   ((a * 2) + (b * 3), (a * 2) - (b * 3))


?мне интересно именно как конструкция "let in" раскрывается
(let b = a * 2 in foo) = (\b -> foo) (a * 2)
источник

JS

Jerzy Syrowiecki in Haskell
хотя это простейший случай
источник

а

а это кто in Haskell
Jerzy Syrowiecki
(let b = a * 2 in foo) = (\b -> foo) (a * 2)
а,ну да : )
источник

а

а это кто in Haskell
спс
источник