
kana
13.12.2017
19:58:25
так, хм, если представить множестко как функцию принадлежности, то операция нахождения мощности множества может бесконечно долго вычисляться, является ли это проблемой в математике?

Дмитрий
13.12.2017
20:01:56
ДАА ?

kana
13.12.2017
20:02:01
видел где-то определение множества как пары функции принадлежности и равенства
но зачем равенство, если (forall a in A. a in B) and |A| = |B| <=> A = B

Дмитрий
13.12.2017
20:02:47
Одно из следствий невозможности доказательства частного случая проблемы остановы является сильное ограничение сверху непосресдтвенно на ранг возможностей системы типов

Google

Дмитрий
13.12.2017
20:03:44
Что проявляется уже в ряде принципов идриса, например. Да на всех на самом деле проявляется
Все хотят тьюринг-полную систему типов (зануда-мод: не все конечно), но как только ты получишь её, ты просто обнаружишь себя с ещё одним типичным слоем в логике приложения с типичными проблемами
Поэтому вся вот эта абстракция не так легко даётся авторам языков, потому что шаг влево шаг вправо и у тебя проблема останова

kana
13.12.2017
20:24:11
ну просто зачем вообще равенство, если его можно выразить только через принадлежность и мощность

Дмитрий
13.12.2017
20:24:23
Да и вообще говоря могут совместно существовать системы на разных постулатах

kana
13.12.2017
22:09:02

Maxim
13.12.2017
23:43:52
как лучше назвать типы для Арных функций ?
Arity0<R>
Arity1<T1, R>
везде по раному, может конвенция какая есть
у рамды тайпинги совсем не вменяемые

Дмитрий
13.12.2017
23:53:33
Если хочешь нормальной иллюстрации типов вредакторе, то лучше не поленись и опиши каждую такую функцию отдельно

Google

Denis
14.12.2017
01:14:00
толи я не догоняю в 3 ночи, толи хз) но зачем это в пурсе?)
http://try.purescript.org/?gist=1304cf5bdc3af1cefa5f0a9e263d5d49&session=0548d95f-ace6-0132-6b53-a4c79b686f4a

Дмитрий
14.12.2017
02:00:13
Ого, мощная штука
Оочень мощная по ходу
Я всегда задавался вопросом, почему есть ∀ но нет ∃
Вот это ∃ и есть
(то что в Data.Exists чепушня какая-то, стримы какие-то, чзнх)

kana
14.12.2017
02:18:29
с этим есть вопросы
такая фигня называется экзистентиональная (exist, ∃) квантификация, но я знаком, как в пурсе происходит работа с тайпклассами, там инстансы из иплиситной передачи в пурсе-коде начинаются передаваться эксплиситно в js-коде как аргумент
и как это будет работать с exist, где мы не знаем, что за инстанс

Дмитрий
14.12.2017
02:18:59
Через замыкание
Там тащемта есть кнопка Show JS

Denis
14.12.2017
02:25:12
у хаскелл есть такой Forall https://hackage.haskell.org/package/constraints-0.9.1/docs/Data-Constraint-Forall.html

Дмитрий
14.12.2017
02:25:15
Интересно, насколько можно высушить такой код, если пройтись по нему Uglify с кложур компилером (благо пурса из коробки CC-Friendly)

kana
14.12.2017
02:25:55
а, лол, это не existentially quantified types и это не работает

Denis
14.12.2017
02:27:13
https://gist.github.com/CMCDragonkai/b203769c588caddf8cb051529339635c
ну это же самый обыкновенный Черч
newtype Forall f = Forall (forall r. f r)
runForAll :: forall f r o. (f r -> o) -> Forall f -> o
runForAll f (Forall l) = f l
newtype Maybe' a r = Maybe' {runMaybe :: r -> (a -> r) -> r}
type MMaybe a = Forall (Maybe' a)
nothing :: forall a. MMaybe a
nothing = Forall (Maybe' const)
just :: forall a. a -> MMaybe a
just x = Forall (Maybe' $ \_ j -> j x)
maybe :: forall a r. r -> (a -> r) -> MMaybe a -> r
maybe n j = runForAll $ \(Maybe' f) -> f n j

kana
14.12.2017
03:01:41
а оно и не будет
но я, кстати, не понимаю, почему это называется exist
если это вполне себе forall
те есть вот некоторые говорят, что правильно было бы записывать тип MyShow1 как
MyShow1 :: (exist a. Show a => a) -> MyShow1
но это же вполне себе
MyShow1 :: forall a. Show a => a -> MyShow1
что хаскель и показывает

Google

kana
14.12.2017
03:10:45
или это внесение forall за скобки превращает его в exist?
forall n in Nat. n + 1 > n -> Prop
(exist n in Nat. n + 1 > n) -> Prop
че
аааа, хм, да, это имеет смысл
типа специализированная версия

adam
14.12.2017
03:14:36

kana
14.12.2017
03:15:18
так
это че за интегралы
я тут шарагу закончил

adam
14.12.2017
03:16:43
К примеру функция, которая берёт сумму в типе, имплементируется как кейс для каждого типа, представленного в сумме

kana
14.12.2017
03:17:20
∀ a ∋ A. a ∋ B → A ⊃ B
(∃ a ∋ A. a ∋ B) → A ⊃ B
вот так можно судить?

adam
14.12.2017
03:17:56
Кстати, композицию профункторов нужно и определять через экзистенциальный

kana
14.12.2017
03:21:23

adam
14.12.2017
03:26:44
Тут короче нужно определить конец как универсальное диестественное преобразование над профунктором и его дуализм для доказательства

Denis
14.12.2017
03:27:14

adam
14.12.2017
03:27:32
ой, мемес с дуальностью

kana
14.12.2017
03:27:35
пойду на html писать

adam
14.12.2017
03:28:31
http://comonad.com/reader/2008/kan-extension-iii/
Ещё где-то видел хороший пример на доказательстве ниндзя леммы йонеды, там весь этот мусор с теоркатом
А вообще тут речь уже идёт не о функциях, а об отношениях

Denis
14.12.2017
03:29:16
символ интеграла это как и есть (сумма) тут?

adam
14.12.2017
03:31:11

Google

Denis
14.12.2017
03:32:09
^x <- top
_x <- bottom
?
я в теоркат глубоко еще не погружался

adam
14.12.2017
03:33:32

Denis
14.12.2017
03:33:43

adam
14.12.2017
03:35:40

Denis
14.12.2017
03:35:59

kana
14.12.2017
03:37:22
(forall a. P a) -> Void - exist
forall a. P a -> Void - forall
это то же самое
not (exist a. P(a)) = forall a. not (P a)

Admin
ERROR: S client not available

kana
14.12.2017
03:37:31
это верно?
так лол, в пурсе нет gadt
как код тогда писать?

Denis
14.12.2017
03:47:21
http://code.slipthrough.net/2016/08/10/approximating-gadts-in-purescript/
https://futurice.com/blog/more-gadts-in-purescript

kana
14.12.2017
03:49:46
ты просто кидаешь первые результаты гугла

Denis
14.12.2017
03:49:51
Leibniz...

kana
14.12.2017
03:51:04
во второй статье пример Refl типа
который не работает

Google

kana
14.12.2017
03:56:32
и не ясно, почему он вообще должен работать

Denis
14.12.2017
09:10:29
algebraic effects :D https://gist.github.com/sebmarkbage/2c7acb6210266045050632ea611aebee
http://blog.ezyang.com/2010/10/existential-type-curry/

Yung
14.12.2017
10:51:42

Denis
14.12.2017
11:29:43
по мотивам Стефена Диля
https://github.com/mjepronk/wiwinwl-purescript

Aleksei
14.12.2017
11:31:57
Всем привет. В js где могут использоваться бифункторы или нечто подобное? Сначала подумал про работу с промисами, где в then указываем resolve и reject, но обработаная ошибка не считается ошибка - то, что прошло через reject дальше по цепочке попадет в resolve. Есть в js что-нибудь нативное, что ведет себя как здесь https://github.com/fantasyland/fantasy-land#bifunctor ?

illiatshurotshka❄️
14.12.2017
11:34:19
either, tuple

Denis
14.12.2017
11:34:35

illiatshurotshka❄️
14.12.2017
11:34:52
а
нативное нет конечно

Denis
14.12.2017
11:35:21

Aleksei
14.12.2017
11:36:56
А ну да, если ошибку в reject-е каждый раз пробрасывать, то будет как бифунктор. Просто осмыслить не мог, где это может пригодится

illiatshurotshka❄️
14.12.2017
12:02:25

adam
14.12.2017
13:29:44

kana
14.12.2017
13:45:56
?

Aleksei
14.12.2017
14:09:31
Я не один, кто увидел в этом нечто экозитическое)

kana
14.12.2017
14:10:39
Что именно?
promap всесто dimap?