Size: a a a

2021 March 04

VD

Velvet Darkness in Haskell
Хотелось бы чтоб модификация пусть в IO, но можно было бы создавать или хотя бы передавать его в чистые функции.
источник

VD

Velvet Darkness in Haskell
Т.е. сделать такое:
data Foo = Foo { arr :: IOVector Word16, другие штуки }

bar :: Foo -> Bool
bar = ...
источник

JS

Jerzy Syrowiecki in Haskell
Velvet Darkness
Хотелось бы чтоб модификация пусть в IO, но можно было бы создавать или хотя бы передавать его в чистые функции.
только через freeze, иначе данные могут мутировать конкурентно с чистым кодом, который в это время смотрит на них
источник

JS

Jerzy Syrowiecki in Haskell
Velvet Darkness
Т.е. сделать такое:
data Foo = Foo { arr :: IOVector Word16, другие штуки }

bar :: Foo -> Bool
bar = ...
нет, передавать-то можно и без IO
источник

JS

Jerzy Syrowiecki in Haskell
только содержимое не прочитать
источник

JS

Jerzy Syrowiecki in Haskell
мутабельное содержимое не прочитать без IO
источник

VD

Velvet Darkness in Haskell
Да, логично. В общем попробую наверн вариант с "дать только акссесоры, а внутре делать unsafeFreeze / thaw и стараться не стрельнуть в ногу".
источник

VD

Velvet Darkness in Haskell
Ну либо вообще эту мутабельную штуку из рекорда выпну и пусть будет по феншую чистая часть отдельно, IO отдельно.
источник

JS

Jerzy Syrowiecki in Haskell
thaw тут вроде не нужен
источник

JS

Jerzy Syrowiecki in Haskell
а unsafeFreeze сломается при параллелизации
источник

VD

Velvet Darkness in Haskell
Я имею в виду убрать st \ io из рекорда и юзать unsafethaw\freeze для модификации in place.
источник

JS

Jerzy Syrowiecki in Haskell
а вообще для данных, которые то мутируют, то чистые, — есть язык Раст, в котором эта проблема решена
источник

VD

Velvet Darkness in Haskell
Jerzy Syrowiecki
а unsafeFreeze сломается при параллелизации
Вот тут пока пофиг, оно однопоточное по задумке
источник

JS

Jerzy Syrowiecki in Haskell
Velvet Darkness
Я имею в виду убрать st \ io из рекорда и юзать unsafethaw\freeze для модификации in place.
тогда сломается вообще всё
источник

VD

Velvet Darkness in Haskell
Jerzy Syrowiecki
а вообще для данных, которые то мутируют, то чистые, — есть язык Раст, в котором эта проблема решена
Частью задачи является реализация на хаскеле :)
источник

VD

Velvet Darkness in Haskell
Петпрожектное ковыряние ради фана же.
источник

MK

Maxim Koltsov in Haskell
Velvet Darkness
Я имею в виду убрать st \ io из рекорда и юзать unsafethaw\freeze для модификации in place.
о нет, это ерунда какая-то, не надо так делать
источник

VD

Velvet Darkness in Haskell
Maxim Koltsov
о нет, это ерунда какая-то, не надо так делать
Где-то в internal модулях у кого-то видел, вроде брат был жив 🤔
источник

JS

Jerzy Syrowiecki in Haskell
Velvet Darkness
Частью задачи является реализация на хаскеле :)
тогда я бы взял вместо массива/вектора нормальную чисто функциональную структуру с доступом по индексу за O(1)
источник

VD

Velvet Darkness in Haskell
Jerzy Syrowiecki
тогда я бы взял вместо массива/вектора нормальную чисто функциональную структуру с доступом по индексу за O(1)
А какая у нас чисто функциональная структура с random read / write за О(1)?
источник