Size: a a a

2021 March 04

VD

Velvet Darkness in Haskell
Jerzy Syrowiecki
почему не Vector?
Ну можно в принципе и вектор, но мне показалось избыточно, т.к. размер массива не будет меняться.
источник

VD

Velvet Darkness in Haskell
А ST вектор будет с такой же фигней в итоге
источник

G

GNU/Vsevolod in Haskell
кана
что отличается?
Решение через type family https://t.me/haskellru/328692
источник

JS

Jerzy Syrowiecki in Haskell
Velvet Darkness
Есть тип вида data Foo s = Foo { arr :: STUA.Array s Word16 }.
В main'е создаю его значение через stToIO. Потом это значение хочу передать в другую функцию, которая возвращает IO ()
Получается anotherFunction :: Foo RealWorld -> IO ().
Это норма или я как-то неправильно живу?
MVector тоже не меняет размер
источник

к

кана in Haskell
GNU/Vsevolod
Решение через type family https://t.me/haskellru/328692
тем что там список обычный, длина которого неизвестна
источник

к

кана in Haskell
первое решение - выводим длину списка из функции и требуемого результата. Второе решение - длина списка уже известна заранее, просто требуем функцию нужной длины
источник

JS

Jerzy Syrowiecki in Haskell
Velvet Darkness
Есть тип вида data Foo s = Foo { arr :: STUA.Array s Word16 }.
В main'е создаю его значение через stToIO. Потом это значение хочу передать в другую функцию, которая возвращает IO ()
Получается anotherFunction :: Foo RealWorld -> IO ().
Это норма или я как-то неправильно живу?
явный RealWorld не норма. сделайте эту функцию полиморфной по s
источник

MK

Maxim Koltsov in Haskell
можно PrimMonad s m => Foo s -> m ()
источник

MK

Maxim Koltsov in Haskell
или взять вместо RealWorld тайп фемели которая по монаде даёт её стейт токен, вроде такая была
источник

JS

Jerzy Syrowiecki in Haskell
Velvet Darkness
Есть тип вида data Foo s = Foo { arr :: STUA.Array s Word16 }.
В main'е создаю его значение через stToIO. Потом это значение хочу передать в другую функцию, которая возвращает IO ()
Получается anotherFunction :: Foo RealWorld -> IO ().
Это норма или я как-то неправильно живу?
STUA — это откуда?
источник

MK

Maxim Koltsov in Haskell
STUArray похоже
источник

VD

Velvet Darkness in Haskell
Ага, он.
источник

VD

Velvet Darkness in Haskell
Непрвильно минимальный репро записал :)
источник

VD

Velvet Darkness in Haskell
Так, с полиморфным s не работает: говорит forall s и RealWorld это разные штуки. А PrimMonad походу даже не в base >_>
источник

MK

Maxim Koltsov in Haskell
Velvet Darkness
Так, с полиморфным s не работает: говорит forall s и RealWorld это разные штуки. А PrimMonad походу даже не в base >_>
это пакет primitive
источник

MK

Maxim Koltsov in Haskell
нормальный пакет
источник

VD

Velvet Darkness in Haskell
Уже нахуглил, да.
источник

VD

Velvet Darkness in Haskell
Чот идея совать ST в data мне кажется всё более и более неправильной, раз такое лезет.
источник

VD

Velvet Darkness in Haskell
С другой стороны если не совать, то пересоздание жирненнького массива.
источник

VD

Velvet Darkness in Haskell
Или unsafeThaw / unsafeFreeze везде
источник