Size: a a a

2020 November 19

YR

Yuki Rito in Haskell
Kir
Забавный костыль. А зачем он был нужен-то?
With older versions of the network library (version 2.6.0.2 or earlier) on Windows operating systems, the networking subsystem must be initialised using withSocketsDo before any networking operations can be used..  Наверно WSAStartup()
источник

AV

Alexander Vershilov in Haskell
если честно с новыми тоже надо
источник

AV

Alexander Vershilov in Haskell
но там по смыслу код это:

initialize f = unsafePerformIO $ do
  once $ WSAStartup
  return f


function = initialize Internal.function
источник

AV

Alexander Vershilov in Haskell
Поэтому вызов любой функции из netowork на винде инициализирует рантайн а платишь это 1 раз на вызов функции в течении работы программы
источник

AV

Alexander Vershilov in Haskell
Но на винде всё равно всё плохо, так что не страшно
источник

AA

A64m AL256m qn<co... in Haskell
Alexander N.
Коллеги — а расскажите за Control.Lens.Prisms и below/aside/outside/without из него?
ну below вроде нормально документирован, с остальным не так весело все
про without написано довольно мутно, но грубо говоря, как alongside делает делает линзу для пары
> (Left a, Right b)^.alongside chosen chosen
(a,b)

так without делает призму для Either
> Left (Just 2) ^? without _Just _Right
Just (Left 2)
> Right (Right 3) ^? without _Just _Right
Just (Right 3)
> Left (Nothing) ^? without _Just _Right
Nothing
> Right (Left 3) ^? without _Just _Right
Nothing
источник

AN

Alexander N. in Haskell
ну вот у меня есть data Dep = Before Text | After Text | Nodeps,  и я пытаюсь выбрать призмой Before и/или after (но я еще пытаюсь это через overloaded labels делать)
источник

AN

Alexander N. in Haskell
(выбрать из списка [Deps])
источник

AA

A64m AL256m qn<co... in Haskell
Alexander N.
ну вот у меня есть data Dep = Before Text | After Text | Nodeps,  и я пытаюсь выбрать призмой Before и/или after (но я еще пытаюсь это через overloaded labels делать)
в смысле что выбрать-то? вот так
> [Left 1, Right (Just 2), Right Nothing] ^.. each . filteredBy ((_Right . _Just) `failing` _Left)
[Left 1,Right (Just 2)]

т.е.
> [After "foo", Nodeps, Before "bar"] ^.. each . filteredBy (#_Before `failing` #_After)
[After "foo", Before "bar"]
источник

AA

A64m AL256m qn<co... in Haskell
или так чтоб ["foo", "bar"] получилось?
источник

AN

Alexander N. in Haskell
угу имеено чтоб "распаковать" по возможности
источник

AA

A64m AL256m qn<co... in Haskell
тогда просто
> [Left 1, Right (Just 2), Right Nothing] ^.. each . ((_Right . _Just) `failing` _Left)           
[1,2]

без фильтеред
источник

AA

A64m AL256m qn<co... in Haskell
кстати типдырки достаточно умные чтоб подсказать вот тут
> ([Left 1, Right (Just 2), Right Nothing]::[Either Int (Maybe Int)]) ^.. each . ((_Right . _Just) `_` _Left) :: [Int]

failing

или, к примеру, вот тут
[("foo", Just (1::Int)),("bar", Nothing),("baz", Just 2)] ^.. each . _ _Just :: [(String, Int)]

aside и below
источник

AN

Alexander N. in Haskell
спасибо, попробую это грокнуть теперь ;)
источник

Y

Yuuri in Haskell
Yuki Rito
это что за сигнатура - withSocketsDo :: () => IO a -> IO a ?
А зачем там () =>?
источник

A

Andrey in Haskell
пустой констрейнт — тоже констрейнт?
источник

Y

Yuuri in Haskell
Угу, но зачем? 🙂
источник

AV

Alexander Vershilov in Haskell
haddock пишет: withSocketsDo :: IO a -> IO a
источник

AV

Alexander Vershilov in Haskell
Мне кажется кто-то руками очепятался
источник

KV

Kirill Valyavin in Haskell
Больше похоже на баг в хугле
источник