
Rinat
15.09.2017
16:28:26

Index
15.09.2017
16:31:21

Rinat
15.09.2017
16:32:06
Ну, ты получишь корневой объект типа a
А я хочу тот, который раньше был корневым - типа b

Google

Index
15.09.2017
16:32:59
Так у тебя же остался старый Compact b.
К тому же ты можешь добавить (a, b) и получить Compact (a, b)

Rinat
15.09.2017
16:33:37
Ну это понятно
Я просто думал, что есть возможность брать из региона некорневой объект)
Ну, не страшно)

Index
15.09.2017
16:35:38
Я не совсем понимаю идею корневого объекта. Если я сделаю compactAdd, то у меня будет Compact a и Compact b, а регион один.
Так что доставать я могу любой из объектов из одного компакта.

Rinat
15.09.2017
16:35:56
На счет функций - у меня в них хранится меньшая часть данных. Можно пренебречь.
Да, понял.
Я почему то думал, что Compact b использовать уже нельзя)
Спасибо!

Alexander
15.09.2017
17:53:14
если уж совсем хочется функции, то можно использовать distributed-closure или distributed-static
и страдать с ними

Google

Alexander
15.09.2017
17:53:43
мне обидно, что компакты не падали в compile time если там mutable bytearray внутри
а падали в runtime
и то, что все же с ними все равно нельзя в shared memory
точнее все сериализации десериализации останутся, только дешевле будут

Rinat
15.09.2017
18:01:54
Ну вообще изначально хотели сделать тайпкласс Compactable, но чет забили
Имхо зря

Dmitry
15.09.2017
18:04:38
кто-то знает способ заставить cabal в Setup.hs выполнять какой-то код всегда, вне зависимости от того, менялись файлы проекта или нет - или может, в .cabal можно воткнуть нехаскельные зависимости, что бы он их трекал?
@qnikst ?

Arseniy
15.09.2017
18:11:41
Сделайте скрипт просто на баше?

Bohdan
15.09.2017
18:33:45
Каким пакетом хорошо CLI-аргументы парсить? Попробовал HFlags, выглядит вкусно, но он для какого-то TemplateHaskell оказался; uu-flags пойдёт? Желательно, чтобы сразу ключи читало, то есть не тупо список строк

Anatolii
15.09.2017
18:36:15
Optparse applicative

Alexander
15.09.2017
18:37:29
optparse-applicative +1

Dmitry
15.09.2017
19:21:36
hpack + Setup.hs FTW:
extra-source-files:
- frontend/src/*.elm
- static/*.js
main = DS.defaultMainWithHooks DS.simpleUserHooks{buildHook = buildHook'}
скрипт просто на баше это уныло
т.е оно может трекать нехаскельные зависимости
cabal вроде бы тоже так умеет. так что вот.

Yuriy
15.09.2017
20:47:22
hpack тут причем? он же просто кабалфайл генерит

illiatshurotshka❄️
16.09.2017
00:39:19
считается ли возвращение _|_ сайд эффектом?

adam
16.09.2017
01:41:17

kana
16.09.2017
06:13:54
Вроде как тут говорили, что да, является
Ну и действия от него вполне тянут на сайд-эффект - терминация программы

Google

Ilya
16.09.2017
06:26:12

Yuriy
16.09.2017
06:57:31
аварийное завершение программы считается ошибкой, отстутствием правильного завершения, а не побочным эффектом

Alexander
16.09.2017
07:07:06

Ilya
16.09.2017
07:10:09

Yuriy
16.09.2017
08:30:30
побочные эффекты неплохо кодируются аппликативами и разными другими штуками

Alexander
16.09.2017
08:48:05
побочные эффекты кодируются структурой данных
а аппликейтив оно или монад или просто ыунктор это другой вопрос

Евгений
16.09.2017
09:01:23
считается ли возвращение _|_ сайд эффектом?
Не является, в любом тьюринг-полном языке с рекурсивными типами любой тип населён абсурдными элементами.
Боттом фиксированное название одного из них, таких дохуя в каждом типе

Ilya
16.09.2017
09:12:02
Кстати, а что за кайнд (* -> *) -> * ?
Можно пример такого типа?

? animufag ?
16.09.2017
09:15:41
не совсем то
data Free f a = Pure a | Free (f (Free f a))
(ну просто оно запомнилось применением своего аргумента, наверное есть и проще примеры)
Fix f = f (Fix f)
видимо то что нужно

Ilya
16.09.2017
09:22:05

? animufag ?
16.09.2017
09:23:48
newtype Fix f = Fix { unFix :: f (Fix f) } deriving (Generic, Typeable)

Ilya
16.09.2017
09:24:34
хм, интересно:)

Google

Ilya
16.09.2017
09:25:02
про функцию fix я читал, а вот про тип нет

Alexander
16.09.2017
09:45:21
data Q f = forall a. Q (f a)

? animufag ?
16.09.2017
09:52:55

Alexander
16.09.2017
09:53:14
сам написал, меня попросили я написал

? animufag ?
16.09.2017
09:54:16
аа

Alexander
16.09.2017
09:54:17
после знака равно может быть что угодно главное что f кайнда *->*, т.е. принимает тип и возвращает тип, который может быть значением
именно этот вариант не очень осмысленный, но можно придумать и осмысленный
у фикс как написано выше будет (*->*)->*->*

? animufag ?
16.09.2017
09:55:24
просто применение таких штук сложновато представить

Alexander
16.09.2017
09:55:28
и.е. это не то

Ilya
16.09.2017
09:55:44
здесь forall это экзистенциальный тип?

Vasiliy
16.09.2017
09:56:07
вполне можно представить себе применение

Alexander
16.09.2017
09:56:08
ну да можно убрать и написать Q (f Int)
= Q (f Int)
ну если его до ко-йонеды довести но будут

Vasiliy
16.09.2017
09:56:38
data User f = User { userName :: f String }

? animufag ?
16.09.2017
09:56:41

Alexander
16.09.2017
09:56:42
или классов типов добавить
вот да про юзера лучше

Vasiliy
16.09.2017
09:56:59
User Identity - валидный, User (Either Err) - результат валидации

Google

Alexander
16.09.2017
09:56:59
data Fix f a
не?
а блин туплю
норм
там Free f a а Fix от ненр

illiatshurotshka❄️
16.09.2017
09:57:56

? animufag ?
16.09.2017
10:00:02
да определенно тут периодически всплывает что бесконечная рекурсия и андефайнед - сай эффекты

illiatshurotshka❄️
16.09.2017
10:01:14
ну _|_ ломает referential transparency если я правильно понимаю

Alexander
16.09.2017
10:23:55
пример
(не ломает)

Евгений
16.09.2017
11:41:05
Кстати, как формализовать понятие "сайд-эффекта"? Как я не бьюсь, у меня получается, что сайд-эффектов нет, есть неправильная типизация

Yuriy
16.09.2017
11:55:39

kana
16.09.2017
11:57:45
E x. f x ≠ f x ?

Евгений
16.09.2017
11:59:32

Yuriy
16.09.2017
12:00:00
E x. f x ≠ f x ?
это недетерминированность, она перпендикулярна побочным эффектам

Евгений
16.09.2017
12:00:32
Т.е. это неправильная типизация

kana
16.09.2017
12:00:57
Если функция возвращает разные значения, значит она зависит от чего-то, что изменяется, значит есть сайдэффект

Евгений
16.09.2017
12:02:07
Что значит "вохвращаемые значения"? Процедурная чушь какая-то. Нет возвоащаемых значений, есть редукция терма (f x)