Size: a a a

2020 May 31

A

Antonio in Haskell
какие есть хорошие педагогические примеры полезности Void? (pipes — плохой пример, сразу говорю)
источник

AV

Alexander Vershilov in Haskell
i'll'never'exit :: IO Void
i'll'never'exit = fix $ \loop -> do
  ...
  loop
источник

AV

Alexander Vershilov in Haskell
правда с этим приходится писать
race_ (absurd <$> i'll'never'exit) ...
источник

AV

Alexander Vershilov in Haskell
Спасибо!
источник

R

Roman in Haskell
Alexander Vershilov
правда с этим приходится писать
race_ (absurd <$> i'll'never'exit) ...
Потому что на самом деле тип должен быть IO void
источник

AV

Alexander Vershilov in Haskell
(x :: Bool) <- i'll'never'exit
when x $ putStrLn "HellNo!"
источник

R

Roman in Haskell
Alexander Vershilov
(x :: Bool) <- i'll'never'exit
when x $ putStrLn "HellNo!"
и шо, я тоже так могу:

(x :: Void) <- i'll'never'exit
when (absurd x) $ putStrLn "HellNo!"
источник

R

Roman in Haskell
у Сноймана пост был
источник

AV

Alexander Vershilov in Haskell
Снойман кажется Void делал или передумал?
источник

R

Roman in Haskell
источник

R

Roman in Haskell
However, I would recommend one slight modification:

updateTimeRef :: IORef String -> IO void

Using the type variable void makes your intentions crystal clear to the reader, while still giving the flexibility to treat the result as any value you want.
источник

R

Roman in Haskell
Alexander Vershilov
Снойман кажется Void делал или передумал?
он делал Void в негативной позиции и void в позитивной
источник

R

Roman in Haskell
(а с проксями соответственно наоборот)
источник

A

Antonio in Haskell
Alexander Vershilov
i'll'never'exit :: IO Void
i'll'never'exit = fix $ \loop -> do
  ...
  loop
сгодится. спасибо
источник

AA

A64m AL256m qn<co... in Haskell
> And it seems very hard to make changes without introducing performance regressions, which take a long time to debug.

ну конечно, как началась вся эта истерия вокруг скорости компиляции и стали они над каждым процентом трястись все фичи и встали
анлифтнутые типы тож встали из за скорости компиляции
(хотя, справедливости ради, никто не будет использовать анлифтнутые типы все равно)
источник

A

Andrey in Haskell
не факт, чтo прo скoрoсть кoмпиляции там.. мoжет, прo рантайм
источник

к

кана in Haskell
Antonio
какие есть хорошие педагогические примеры полезности Void? (pipes — плохой пример, сразу говорю)
я думаю какой-нибудь empty из Alternative на самом деле должен быть
empty :: m Void
который через fmap absurd превращался бы уже в m a
но я не уверен

поэтому всякие парсеры которые ничего не парсят - Parser Void, всякие Maybe-результаты, где точно нет Just - Maybe Void, тд
источник

AA

A64m AL256m qn<co... in Haskell
Andrey
не факт, чтo прo скoрoсть кoмпиляции там.. мoжет, прo рантайм
я думаю, что про скорость компиляции
источник

IK

Ilya Kos in Haskell
кана
я думаю какой-нибудь empty из Alternative на самом деле должен быть
empty :: m Void
который через fmap absurd превращался бы уже в m a
но я не уверен

поэтому всякие парсеры которые ничего не парсят - Parser Void, всякие Maybe-результаты, где точно нет Just - Maybe Void, тд
может быть релевантным: https://tech.fpcomplete.com/blog/2017/07/to-void-or-to-void
источник

IK

Ilya Kos in Haskell
мне кажется (forall a. a) ~ Void, но a выглядит практичнее, чем Void потому что на практике тебе почти всегда надо будет Void фмапать абсурдом.
источник