haskellru | Unsorted

Telegram-канал haskellru - Haskell

1756

https://combot.org/chat/-1001043143583 Ссылки на полезные ресурсы: https://ruhaskell.org/links.html ; Информация о мероприятиях: https://gist.github.com/qnikst/a96cac661be80d126d0829f2ced1916e

Subscribe to a channel

Haskell

Ты главное потом назад в ST не конвертируй.

Читать полностью…

Haskell

конечно не хочу
я чувствую, что можно без IO сделать
но у меня нет другого выхода, видимо

Читать полностью…

Haskell

БЕН ГАМАРИ ТАК СКАЗАЛ

Читать полностью…

Haskell

пойду впихну туда stToIO и скажу, что так и надо

Читать полностью…

Haskell

То есть понятно, что (forall s. ST s a) -> a это на самом деле энкодинг exists s. ST s a -> a, но вот чем это помогает не вижу.

Читать полностью…

Haskell

ну почему тогда нельзя так сделать с Conduit без оберток?

Читать полностью…

Haskell

кстати ты когда-то говорил про Forall это не подойдет тут?

Читать полностью…

Haskell

(Убедился, что идея viable)

Читать полностью…

Haskell

ну или я не так понял

Читать полностью…

Haskell

а что если заюзать Control.Monad.Morph и перевести Conduit -> IORef и просто с ним рабоать? а потом обратно когда надо?

Читать полностью…

Haskell

и зачем тебе там вообще ST, возьми IO и IORef

Читать полностью…

Haskell

это, видимо, не сработает, потому что я всё-таки хочу уметь два таких кондуита объединять

видимо, буду пытаться запустить кондуит внутри кондуита тогда, а потом runST

Читать полностью…

Haskell

Если тебе хочется делать runST под Conduit через hoist, то это должен быть ConduitM i o (forall s. ST s) r, который надо энкодить ньютайпом над ST чтобы не было импредикативности.

Читать полностью…

Haskell

Я могу себе представить конверсию в одну сторону (forall floats out), но не в другую (forall floats in).

Читать полностью…

Haskell

Будь F простым списком или Conduit

Читать полностью…

Haskell

Брать s ~ RealWorld и делать stToIO это нормально, но ты уже runST не сделаешь.

Читать полностью…

Haskell

Я не понял, ты в итоге в IO хочешь или нет?

Читать полностью…

Haskell

https://github.com/well-typed/cborg/issues/156

Читать полностью…

Haskell

ок, ну в общем не работает оно с AST

Читать полностью…

Haskell

Я не понял при чем тут экзистенциальная квантификация, если тут квантор всеобщности, и как поможет Forall, который вообще для констрейнтов.

Читать полностью…

Haskell

я так понял тут нужен квантор существования

Читать полностью…

Haskell

Но у тебя, естественно, не будет внутри кондуита доступа к STRef, созданным за его пределами.

Читать полностью…

Haskell

{-# LANGUAGE RankNTypes #-}

module STForall where

import Control.Monad.ST

newtype AST a = AST { runAST :: forall s. ST s a }

instance Functor AST where
fmap f (AST st) = AST (fmap f st)

instance Applicative AST where
pure a = AST (pure a)
AST f <*> AST a = AST (f <*> a)

instance Monad AST where
m >>= f = AST $ do
x <- runAST m
runAST (f x)

Читать полностью…

Haskell

откуда IORef? там cborg как-то внутри у себя юзает ST, я не могу его попросить складывать всё в одну переменную

Читать полностью…

Haskell

хорошо хорошо уговорил сейчас попробую

Читать полностью…

Haskell

Почему не ST-ньютайп?

Читать полностью…

Haskell

такс) пошла жесть тут) я пожалуй откланяюсь)

Читать полностью…

Haskell

Если у тебя forall s. ConduitM i o (ST s) r, то лучшее что ты можешь сделать, это сначала запустить conduit, а потом сделать runST, и получить в итоге r

Читать полностью…

Haskell

Потому что семантика у этих штук разная:

[forall s. ST s a] — список независимых ST действий, каждое из них можем запустить отдельно, между ними нет shared STRef-ов

forall s. [ST s a] — список ST-действий с одним и тем же s, между ними могут быть shared STRef-ы

Читать полностью…

Haskell

Если у тебя forall a. F a, ты не получишь из этого F (forall a. a) уже никогда.

Читать полностью…
Subscribe to a channel