Size: a a a

2021 February 06

Oℕ

Oleg ℕizhnik in Haskell
Alexander Novikov
Менял данные в STUArray, после runSTUArray получил UArray. После каждого прогона в старом UArray старые данные, а в новом - новые. Т.е. две копии. Если не выходить из ST, то ничего не исполняется. Поищу образец.,.
Пока всё правильно звучит, а проблема где?
источник

AA

A64m AL256m qn<co... in Haskell
Alexander Novikov
Менял данные в STUArray, после runSTUArray получил UArray. После каждого прогона в старом UArray старые данные, а в новом - новые. Т.е. две копии. Если не выходить из ST, то ничего не исполняется. Поищу образец.,.
так в том и смысл, что он мутабельный в ST только
(вообще это не относится к обсуждаемой теме, но не надо использовать пакет array, надо vector)
источник

[

[BRM]White Rabbit in Haskell
У меня тут вопросец назрел
1 - чисто теоретически в хаскеле все функции - чистые, если не вспоминать какой-нибудь ансейв или что-то подобное
2 - в чистой функции при одних и тех же аргументах получается один и тот же результат
В соответствии с этими пунктами может ли компилятор увидеть, что у меня в одну функцию часто прилетают одни и те же параметры и посчитать всё в первом вызове, а потом кешировать и тупо кидать сразу ответ?
Или эта фишка так же как и бесплатный параллелизм "было гладко на бумаге, да забыли про овраги", возможна чисто теоретически, но пока никто не реализовал?
источник

MK

Maxim Koltsov in Haskell
Если аргументы известны статически (много раз где-то вызываешь foo 5), посчитается один раз
Если нет, то нет
источник

MK

Maxim Koltsov in Haskell
Насколько я понимаю
источник

MK

Maxim Koltsov in Haskell
Сейчас эксперты ответят)
источник

YS

Yan Shkurinskiy in Haskell
Если это caf, то посчитает один раз
источник

YS

Yan Shkurinskiy in Haskell
Я не эксперт, правда (
источник

[

[BRM]White Rabbit in Haskell
ух, опять всякие монады и прочие модификаторы, до которых я ещё не дошёл
Чуть-чуть понимаю суть, но не полностью
источник

YS

Yan Shkurinskiy in Haskell
Если в текущем "скоупе" можно явно переиспользовать результат, то скорее всего так и будет
источник

YS

Yan Shkurinskiy in Haskell
А оптимизатор ещё может и в топлевел вынести
источник

YS

Yan Shkurinskiy in Haskell
Как я понимаю
источник

MK

Maxim Koltsov in Haskell
если у тебя x <- getLine; foo x, то на каждый ввод с клавиатуры будет считаться заново
источник

MK

Maxim Koltsov in Haskell
даже если ты каждый раз одну и ту же строку пишешь
источник

YS

Yan Shkurinskiy in Haskell
Рилворлд сложно повторить(
источник

MK

Maxim Koltsov in Haskell
оптимизация срабывает только для статически известных аргументов
источник

MK

Maxim Koltsov in Haskell
НО Я МОГУ ОШИБАТЬСЯ
источник

MK

Maxim Koltsov in Haskell
Yan Shkurinskiy
Рилворлд сложно повторить(
ну и x, и foo чистые
источник

YS

Yan Shkurinskiy in Haskell
Maxim Koltsov
ну и x, и foo чистые
Формально
источник

YS

Yan Shkurinskiy in Haskell
На уровне того, что мы даем и берём рилворлд
источник