Size: a a a

2021 March 26

[

[BRM]White Rabbit in Haskell
кана
а это какой-то меморилик, что-то загрузилось в память, но не выгрузилось когда нужно, тупа баг в коде
беды с хлс короче, да?
источник

к

кана in Haskell
кана
а это какой-то меморилик, что-то загрузилось в память, но не выгрузилось когда нужно, тупа баг в коде
(ну или баг в гц ghc, или баг в либах со структурками, или баг в ghc апишке, ну короче именно баг, а не кривой код из-за foldr)
источник

IK

Ilya Kos in Haskell
Sergey
А какие ещё есть типовые случаи?
В целом долго держать ссылки на невычисленные значение может неожиданно становиться проблемой
источник

IK

Ilya Kos in Haskell
+ многие структуры типо Text в некоторых ситуациях держат в памяти какой-нибудь огромный исходный кусок, даже если он тебе не нужен нигде
источник

IK

Ilya Kos in Haskell
И ByteString
источник

IK

Ilya Kos in Haskell
емнип
источник

[

[BRM]White Rabbit in Haskell
Так, я тут узнал что (->) это монада.
Можете показать примеры, как с ней можно работать? И да, можно ли тогда считать каррирование функций частным видом функтора?
источник

к

кана in Haskell
не -> а (e ->)
источник

к

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

[

[BRM]White Rabbit in Haskell
В общем, вот так, да?
источник

к

кана in Haskell
type R e a = e -> a
ask :: R e e
ask = id
local :: (e -> e2) -> R e2 a -> R e a
local f r = r . f
runR :: R e a -> e -> a
runR = id

y = ask

x :: Int -> Int
x = do
 a <- ask
 b <- local succ y
 pure (a, b)

x 1 == 3
источник

[

[BRM]White Rabbit in Haskell
кана
type R e a = e -> a
ask :: R e e
ask = id
local :: (e -> e2) -> R e2 a -> R e a
local f r = r . f
runR :: R e a -> e -> a
runR = id

y = ask

x :: Int -> Int
x = do
 a <- ask
 b <- local succ y
 pure (a, b)

x 1 == 3
Всё, я понял
источник

[

[BRM]White Rabbit in Haskell
Кана опять пошёл развивать абстракцию до абсурда...
источник

к

кана in Haskell
можешь посмотреть на определение ридера в transformers, он буквально как стрелка и объявлен
источник

к

кана in Haskell
newtype ReaderT e m a = ReaderT (e -> m a)

type Reader e = ReaderT e Identity

Reader e a =
ReadertT e Identity a =
e -> Identity a =
e -> a
источник

к

кана in Haskell
есть еще инстанс монады для пары
Monoid w => Monad ((,) w)
источник

к

кана in Haskell
он такой же как инстанс Writer, и наоборот, определение Writer это буквально пара
источник

[

[BRM]White Rabbit in Haskell
кана
есть еще инстанс монады для пары
Monoid w => Monad ((,) w)
это я тоже видел
источник

[

[BRM]White Rabbit in Haskell
хаскель можно изучать, просто глядя на сигнатуры и инстансы в ghci....
источник

[

[BRM]White Rabbit in Haskell
кана
есть еще инстанс монады для пары
Monoid w => Monad ((,) w)
А почему b должно быть числом?..
источник