
Yuriy
19.07.2018
12:43:50
@icrbow ты об этом?

IC
19.07.2018
12:44:15
нет
наверно

Yuriy
19.07.2018
12:45:15
ещё говорят, что множество замкнуто относительно операции, но здесь операция важнее, чем множество

Google

Ilya
19.07.2018
12:45:51
Замкнутость и открытость это топологические термины

Yuriy
19.07.2018
12:47:25
https://ru.wikipedia.org/wiki/Замкнутое_множество
да, есть и такая замкнутость

Евгений
19.07.2018
12:51:40
Какую ты проблему решаешь изначально? Чувствую XY

IC
19.07.2018
12:52:51
хочу нормальный маркер для вот этого всего вместо Bool

Vladimir
19.07.2018
12:53:40
Множеству не обязательно вообще быть открытым или замкнутым.
И не обязательно быть исключительно либо открытым, либо замкнутым. Можно быть и тем, и другим.

Евгений
19.07.2018
12:54:49
Потому что, опять же, никто не оперирует этими понятиями одновременно
Замкнутое это всего ли дополнение открытого, по сути не очень полезное понятие

Ilya
19.07.2018
13:17:24
Both и т.д.

Google

Vladimir
19.07.2018
13:19:05
Пропустил код.

Ilya
19.07.2018
13:19:37
Только нафига это нужно, и правда непонятно

IC
19.07.2018
13:20:06

Ilya
19.07.2018
13:21:03
Понял, тебе надо закрытость и открытость в одно слово смэшить
Чтобы тип назвать
Так?

kana
19.07.2018
13:22:13
не помню, чтобы эту классификацию как-то называли
"по открытости"
или "по замкнутости"

Ilya
19.07.2018
13:23:07
Да заведи просто два типа изоморфных Bool, и запихни их в тип, изоморфный паре

kana
19.07.2018
13:23:26
а как его назвать?)
тип, изоморфный паре

Ilya
19.07.2018
13:23:46
Вот для этого и пара
Чтоб не называть, но он так не хочет

Александр
19.07.2018
13:23:55

Ilya
19.07.2018
13:25:16
f :: (Openess, Closeness) -> IO ()
Норм читается

IC
19.07.2018
13:26:30

Google

kana
19.07.2018
13:26:30
на хаскеле?
^

Ilya
19.07.2018
13:27:37
А по-русски можно?

IC
19.07.2018
13:28:30

A64m
19.07.2018
13:32:33
ну тип для конструкторов Foo и Bar всегда можно назвать FooBar, и сэкономить время на придумывание чего-то получше

IC
19.07.2018
13:35:38
data COBN
всё, обошёлся изобретением темплейтов ?

Ilya
19.07.2018
18:43:53

Index
19.07.2018
19:59:42
в Haskell totality checker нужен для оптимизации, чтобы Refl в рантайме не конструировать
доказывать так ничего не возьмешься, разумеется
ну, в смысле, возьмешься, но всё будет с оговоркой, что никто нигде bottom не сотворил, то есть это не доказательство, а скорее sanity check кода

Aleksey
19.07.2018
20:03:55
А вот когда доделают левити полиморфизм

A64m
19.07.2018
20:04:45
смотря что подразумевается под доделанным

Aleksey
19.07.2018
20:05:54
Unlifted types разве есть сейчас в GHC? Могу я попросить на вход функции анлифтнутый тип?
ну я имел в виду не Levity polymorphic data types а пменно анлифтнутые типы
в какой нибудь форме

A64m
19.07.2018
20:08:15
массивы разве что

Aleksey
19.07.2018
20:08:40
ну т.е. нет

Alexander
19.07.2018
20:09:28
unboxed sum есть

Google

A64m
19.07.2018
20:09:30
объявлять такие типы как обычные хаскельные алгтд нельзя, так такое и не планируется сейчас

Alexander
19.07.2018
20:09:46
unlifted типы тоже

A64m
19.07.2018
20:10:05
так анбокснутые суммы они не только анлифтнутые

Alexander
19.07.2018
20:10:24
ну пихнуть туда Array#

Aleksey
19.07.2018
20:10:24
а еще и анбокснутые ..

A64m
19.07.2018
20:10:26
анлифтнутые это когда не надо за ленивость платить

Alexander
19.07.2018
20:10:41
он вроде unlifted boxed
но это тот ещё ад

Admin
ERROR: S client not available

Alexander
19.07.2018
20:11:19
оно вообще интересно заработает?

A64m
19.07.2018
20:11:54
можно будет, наверное, в перспективе костылить их на ньютайпах, которые планируется сделать работающими для типов разных левити, но это еще не имплементировано
т.е. можно будет делать такой аналог растовых енумов, анбокс, без рекурсии и т.д. но делать их кучей бойлерплейта, т.е. анб. суммами, ньютайпами и паттерн синонимами
ну можно еще бекпаком такое делать уже сейчас, но с еще большим бойлерплейтом потому, что бекпак паттерн-синонимы не поддерживает
но бекпаком вообще можно левити полиморфный код писать, с 8.4
еще планируются типизированные массивы для анлифтед значений, а не как сейчас
вот собственно и все
планов не очень много, так что и доделывать особо нечего

Index
19.07.2018
20:15:16

A64m
19.07.2018
20:15:16
но, веротно, новые планы могут появится, движение в этом направлении есть

Index
19.07.2018
20:15:46
но вот коэрсить списки и индексированные длиной списки было бы точно прикольно

Google

Index
19.07.2018
20:16:13
при условии, что там equality proof каким-то образом анбокснулся и на рантайм-представлении не отразился

A64m
19.07.2018
20:16:40
вроде я видел пример где дерайвинг виа делается для эквивалентных с точки зрения структуры типов (на дженериках)
это же фактически коерс

Index
19.07.2018
20:17:07
так соль коерса в том, что он id
а на генериках там по воле оптимизатора

A64m
19.07.2018
20:17:44
не, речь не про преобразование на дженериках, это сто лет возможно
а для конструирования дженериками свидетельства структурной эквивалентности, которое позволяет переносить инстанс с одного на другой, что уже id

Index
19.07.2018
20:18:50
да ладно
не представляю себе как это работает
в пейпере по DerivingVia это есть?

A64m
19.07.2018
20:19:08
я тоже Ж((

Index
19.07.2018
20:19:09
если да, придется читать

A64m
19.07.2018
20:19:30
вроде в примерах в каких-то гистах автора пропозала
попробую найти
если да, придется читать
да, я похоже неправильно вспомнил вот 4.3 Deriving via isomorphisms там все же от оптимизатора зависит

Index
19.07.2018
20:37:01
ну это я как раз могу понять

A64m
19.07.2018
20:38:03
но технически можно же ансейф коерсом кастить если проверить дженериками структурную эквивалентность, анформация об анпаке там же вроде есть

Index
19.07.2018
20:41:32
да unsafeCoerce-ом много что можно делать, но это не интересно, хочется representational equality
я вот думал было бы интересно ее постулировать в таком стиле:
deriving instance Coercible A B
и тогда GHC пусть проверял бы структурную эквивалентность сам

A64m
19.07.2018
20:42:35
так тут не ансейфкоэрс часть интересна, а возможность проверить эквивалентность дженериками

Index
19.07.2018
20:43:50
а оно обманчиво