@haskellru

Страница 405 из 1551
Index
15.09.2017
16:31:21
Как оттуда теперь получить при необходимости объект b?)
Я может не понимаю вопрос, но есть же getCompact?

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
считается ли возвращение _|_ сайд эффектом?
Кажется, что ты не понимаешь зачем хаскеллю вообще понадобился undefined undefined :: a undefined = error "Prelude.undefined"

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

Google
Ilya
16.09.2017
06:26:12
Вроде как тут говорили, что да, является Ну и действия от него вполне тянут на сайд-эффект - терминация программы
А можно сказать, что все вычисления в Haskell подразумевают чистые вычисления, завёрнутые в монаду MaybeU a = JustU a | undefined ?

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
Fix f = f (Fix f)
а где тут конструктор типа?

? 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
data Q f = forall a. Q (f a)
откуда это?

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 от ненр

? 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
Кстати, как формализовать понятие "сайд-эффекта"? Как я не бьюсь, у меня получается, что сайд-эффектов нет, есть неправильная типизация

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

Евгений
16.09.2017
11:59:32
любое наблюдаемое изменение в мире, не отражённое в возвращаемом значении
Это не формализация, во-первых, во-вторых такого просто не бывает, если мы мыслим через формализацию вычислений посредством lambda calculus

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)

Страница 405 из 1551