Size: a a a

2020 June 03

к

кана in Haskell
понял
источник

AV

Alexander Vershilov in Haskell
Ага
источник

AV

Alexander Vershilov in Haskell
А я думал через имплиситы прицепить event-listener-ы
источник

AV

Alexander Vershilov in Haskell
Но тогда у меня в разных модулях логично бы иметь что-то типа (?listener :: X)
источник

AV

Alexander Vershilov in Haskell
А поскольку пространство имен общее, то так просто это не сделать
источник

AV

Alexander Vershilov in Haskell
(Но это пока на уровне мыслей, я ни строчки кода не написал для этого)
источник

к

кана in Haskell
так а если сейчас имплиситы реализованы через IP класс, то почему это работает там
источник

AV

Alexander Vershilov in Haskell
Мне кажется они реализованы не просто через IP, а через IP fundep и кучу магии
источник

AV

Alexander Vershilov in Haskell
Т.е. это настоящее расширение, а не синтаксический сахар
источник

AV

Alexander Vershilov in Haskell
Вообще у меня в последнее время в голове возникает много идей о том, как лучше организовывать код, всякие принципы, стандартные решения - я боюсь, что у меня поехала крыша 🙁
источник

AV

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

AV

Alexander Vershilov in Haskell
Причем, чем более успешные будут подходы и решения - тем раньше поедет 🙁
источник

к

кана in Haskell
поддерживаю вопрос
источник

к

кана in Haskell
подскажите, как написать такой вот фильтр, чтоб работал на бесконечных списках?

у меня есть функция pred :: a -> IO Bool
и последовательность xs :: [a]
хотелось бы такой filter :: Monad m => (a -> m Bool) -> [a] -> m [a]

cейчас я могу написать несколькими способами: do нотация, комбинаци sequence. При попытке вывести первые 10 элементов через take 10 поднятое fmap, или через do нотацию – ничего не происходит, точнее вычисления пытаются дойти до конца бесконечного списка. Как обойти такую проблему?

хотел изначально использовать liftIO но MonadIO не реализован для списков
к примеру такое работает
a = return [1..] :: IO [Int]
take 10 <$> a
источник

к

кана in Haskell
filterM виснет
источник

LO

Leonid 🦇 Onokhov in Haskell
Alexander Vershilov
Вообще у меня в последнее время в голове возникает много идей о том, как лучше организовывать код, всякие принципы, стандартные решения - я боюсь, что у меня поехала крыша 🙁
Книжку пиши
источник

AV

Alexander Vershilov in Haskell
кана
filterM виснет
Для IO - unsafeInterleaveIO
источник

AV

Alexander Vershilov in Haskell
У тебя структура M должна уметь в ленивость
источник

IK

Ilya Kos in Haskell
кана
подскажите, как написать такой вот фильтр, чтоб работал на бесконечных списках?

у меня есть функция pred :: a -> IO Bool
и последовательность xs :: [a]
хотелось бы такой filter :: Monad m => (a -> m Bool) -> [a] -> m [a]

cейчас я могу написать несколькими способами: do нотация, комбинаци sequence. При попытке вывести первые 10 элементов через take 10 поднятое fmap, или через do нотацию – ничего не происходит, точнее вычисления пытаются дойти до конца бесконечного списка. Как обойти такую проблему?

хотел изначально использовать liftIO но MonadIO не реализован для списков
к примеру такое работает
a = return [1..] :: IO [Int]
take 10 <$> a
А там нет проблемы что он должен эффекты протянуть через все элементы?
источник

IK

Ilya Kos in Haskell
Например если последний элемент кидает ошибку
источник