Size: a a a

2020 December 16

MK

Maxim Koltsov in Haskell
Ну так и я могу (
источник

A

Andrey in Haskell
ну извиняй
источник

G

GNU/Vsevolod in Haskell
Maxim Koltsov
Монада State
А мутировать сет как?
типа
... do
 cache <- x `insert` cache
?
источник

MK

Maxim Koltsov in Haskell
В монаде State есть операции get и put
источник

MK

Maxim Koltsov in Haskell
И modify
источник

к

кана in Haskell
1. это не будет мутация, создается новый сет все равно, просто далее в коде get будет возвращать новый сет, а не старый
2.

modify (insert x)
источник

MK

Maxim Koltsov in Haskell
кана
1. это не будет мутация, создается новый сет все равно, просто далее в коде get будет возвращать новый сет, а не старый
2.

modify (insert x)
Пункт 1 - честно мутабельный сет все равно сложно получить, поэтому я эту опцию и не рассматривал вообще
источник

к

кана in Haskell
хм, взять любую мутабельную [хеш]мапу. Таких нет в хаскеле?
источник

MK

Maxim Koltsov in Haskell
Есть, кажется, но тогда надо жить в IO или ST
источник

MK

Maxim Koltsov in Haskell
Есть пакет impure-containers, но я не помню что именно там есть
источник

G

GNU/Vsevolod in Haskell
Maxim Koltsov
Есть, кажется, но тогда надо жить в IO или ST
Разве без монады вообще так возможно?
источник

G

GNU/Vsevolod in Haskell
это же сайд эффект — поместить ноду в кеш
источник

к

кана in Haskell
ну так и стейт - монада
источник

к

кана in Haskell
GNU/Vsevolod
Можно как-то работать с Data.Set в рекурсии при том, что используется один и тот же сет? Кейс — хожу рекурсивно по дереву решений, и если нода уже встречалась ранее в соседних ветках, то останавливаюсь
так, правильный ответ - нет
источник

G

GNU/Vsevolod in Haskell
кана
так, правильный ответ - нет
Есть правильный паттерн в хаскеле, чтобы это реализовать?
источник

к

кана in Haskell
а зачем использовать тот же самый Set?
источник

MK

Maxim Koltsov in Haskell
Кана, не занудствуй
Самый правильный выход для начала - монада State
источник

G

GNU/Vsevolod in Haskell
кана
а зачем использовать тот же самый Set?
Это как пример структуры с быстрым lookup, чтобы определять, в кеше нода или нет
источник

к

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

G

GNU/Vsevolod in Haskell
кана
ну так и иммутабельный сет тоже будет иметь быстрый лукап
Иммутабельный у меня не сработает, кеш должен шериться на все ветки обхода
источник