@haskellru

Страница 409 из 1551
Alexander
18.09.2017
09:57:36
для unqiue или линейных типов оно автоматом будет

наверное только достаточно чтобы длина совпадала

но это надо доказывать

наши ребята пилящие линейные типы в гхц, сказали что не видят причин почему это неправда, но не знают как доказать

Google
kana
18.09.2017
09:58:23
А, ну да, можно и только длину, уникальные же

Pavel
18.09.2017
09:58:35
автоматически её вывести из такого плохого описания нельзя
из List a -> List a или UniqueList a -> AscendingUniqueList a — да но потому мне и интересно можно ли заложить в типы саму реализацию, но так чтобы она закладывалась не ручками, а на основе реализации

Alexander
18.09.2017
09:58:57
ну _я думаю_ что в типы можно заложить реализацию

поскольну ничего формально не запрещает поднять реализацию на уровень типов

kana
18.09.2017
09:59:22
Написать дсл, который будет дублировать стейтменты идриса)

Alexander
18.09.2017
09:59:29
будет у тебя там IF a < b 'THEN ....

kana
18.09.2017
09:59:37
Чтобы реализация и тип совпадали

Alexander
18.09.2017
09:59:58
i.e. у тебя будет реализация на уровне типов, только непонятен толк от этого

kana
18.09.2017
10:00:10
Но старые конструкции никуда не исчезнут, поэтому весь код покрыть будет нельзя

Pavel
18.09.2017
10:01:35
Написать дсл, который будет дублировать стейтменты идриса)
слишком плохо если просто дублировать стейтменты идриса, то доказывать равенство типов будет нетривиально совсем, разве нет?

Alexander
18.09.2017
10:01:48
скорее всего

вообще идея инетересная в смысле оптимизаций, ведь если "поднять" формальный код на уровень типов, а потом написать оптимальный и можно будет доказать что они эквивалентны

меня можно не слушать, я в зависимых типах и т.п. понимаю не достаточно

Google
kana
18.09.2017
10:02:37
Ну так ты же хотел биекцию. Может ошибаюсь, но если две вещи эквивалентны, то уже биекция невозможна

Pavel
18.09.2017
10:03:31
Ну так ты же хотел биекцию. Может ошибаюсь, но если две вещи эквивалентны, то уже биекция невозможна
я же говорил, что вопрос плохо сформуирован видимо в таком случае нужна биекция не между конкретной реализацией и типами, а между классом эквивалентности реализаций и классом эквивалентности типов

Alexander
18.09.2017
10:07:14
но это же то, что система типов принципиально и дает

компилятор проверяет совпадение заявленного типа, и программы?

Pavel
18.09.2017
10:07:56
но это же то, что система типов принципиально и дает
она не всегда достаточно точна :с хотелось бы сузить эти классы

и желательно более автоматически

а не ручками писать ~200 строк, чтобы доказать, что сортировка работает

Alexander
18.09.2017
10:08:31
ну типы для этого и есть, мы выражаем те свойста, которые хотим иметь

kana
18.09.2017
10:08:59
Было бы все так легко, все бы писали верифицированный код)

Alexander
18.09.2017
10:09:01
а сортировка это достаточно сложная и подлая штука

Alexander
18.09.2017
10:09:22
особенно если не халявить с линейными типами

да, ладно

просто бы сложности программирования перенеслись бы на создание правильных спецификаций

Pavel
18.09.2017
10:10:03
возможно

Alexander
18.09.2017
10:10:26
сейчас то, сложность спецификаций (типов) много меньше, чем сложность программ

kana
18.09.2017
10:11:01
Индуктивные доказательства бы как-нибудь автоматизировать, а то f A = Refl f (B A) = rewrite f A in Refl Такого много

Alexander
18.09.2017
10:11:28
стратегии в coq не для этого?

kana
18.09.2017
10:12:07
Со стратегиями еще не знаком, с доказальствами знаком один день)

Alexander
18.09.2017
10:12:17
ладно наверное соседний чятик больше подойдет, так и людей больше кто с хорошим образованием по теме

Google
illiatshurotshka❄️
18.09.2017
10:12:58
а в идрисе можно писать доказательства как в коке?

kana
18.09.2017
10:13:16
А как их в коке пишут? По моему так декларативно нельзя, все через костыли изоморфизма

Max
18.09.2017
10:13:47
"Монады являются моноидами, ведь как известно, монада — это всего лишь моноид в категории эндофункторов, а монадические законы — не более чем определение моноида в контексте продолжений" Всего лишь. Как известно. С очевидностью следует. Пиздить вас кочергой.

illiatshurotshka❄️
18.09.2017
10:13:47
ну тактиками

kana
18.09.2017
10:14:03
Слова "тактики и стратегии" в идрисе точно есть, видел в доке

Ну на самом деле это со временем действительно становится очевидным)

illiatshurotshka❄️
18.09.2017
10:15:30
ну просто редко учат монады по определению которое интуитивно является моноидом

illiatshurotshka❄️
18.09.2017
10:15:40
но зря

Max
18.09.2017
10:15:59
kana
18.09.2017
10:16:06
Я пост как раз про моноиды и монады пишу. Заочка началась просто

Vyacheslav
18.09.2017
10:16:11
И идрис в целом не очень для доказательств подходит

illiatshurotshka❄️
18.09.2017
10:16:38
ага, особенно политологу это полезно (кем ортега типа является)
ну если тебе не интересно то зачем ты изучаешь?

Pavel
18.09.2017
10:16:39
ага, особенно политологу это полезно (кем ортега типа является)
а зачем политологу знать активно теоркат, кроме как для собственного развития?

Max
18.09.2017
10:16:51
ну если тебе не интересно то зачем ты изучаешь?
он возможно где-то напоролся на это

уже второй раз псит на программистов и всяких айтишников

или третий

illiatshurotshka❄️
18.09.2017
10:18:27
аа это канал какого-то политолога

Google
illiatshurotshka❄️
18.09.2017
10:19:05
ну пусть дальше изучает с таким отношением

kana
18.09.2017
10:22:44
Почему-то канал его не открывается

Alexander
18.09.2017
10:35:32
Vyacheslav
18.09.2017
10:35:51
в idris

Alexander
18.09.2017
10:35:52
а не на моё сообщение было, ок

kana
18.09.2017
10:40:32
Так, вернёмся к другой околохаскелевой теме - определение монады как моноида на эндофункторах. Я понимаю, почему это моноид: (F : C -> C, Indentity : F, Compose : (F, F) -> F), где C - какая-то категория, но не понимаю, как из этого определения следуют join и bind

Alexander
18.09.2017
10:42:00
join это _3, так?

просто по определению

kana
18.09.2017
10:42:13
что за _3?

Alexander
18.09.2017
10:42:19
третий элемент тройки

kana
18.09.2017
10:42:26
Ну да

Стоп, нет

Alexander
18.09.2017
10:42:42
все же да

kana
18.09.2017
10:42:44
Там Compose, не джоин

Compose дает нам возможность работать с композиций функторов как функтором, но не заменяет функтор. Или это одно и то же?

А, ну в принципе да, одно и то же)

Alexander
18.09.2017
10:43:40
щас, должно переписываться одно через другое

kana
18.09.2017
10:43:51
Окей, а unit?

Alexander
18.09.2017
10:46:00
Definition 1.1 A monad over a category C is a triple (T, η,µ), where T: C → C is a functor, η: IdC T and µ:T2 . →T are natural transformations and the following equations hold: • µTA; µA = T(µA);µA • ηTA;µA = idTA = T(ηA);µA A

я к этому определеню больше привык

Google
Alexander
18.09.2017
10:46:38
There is an alternative description of a monad (see [7]), which is easier to justify computationally. Definition 1.2 A Kleisli triple over C is a triple (T, η, ∗), where T:Obj(C) → Obj(C), ηA:A → TA, f∗:TA→ TB for f:A→TB and the following equa- tions hold: • η∗ A = idTA • ηA; f∗ = f • f∗; g∗ = (f; g∗)∗ Every

инетерсно здеть картинку можно пихать или копировлся бы латех сразу :/

тут какое-то третье определение..

Alex
18.09.2017
10:58:31
Они deprecated
почему, pruviloj работает

я даже пару тактик туда контрибутнул

Vyacheslav
18.09.2017
10:59:04
http://docs.idris-lang.org/en/latest/reference/tactics.html

Alex
18.09.2017
10:59:09
другое дело что дебажить их еще сложнее чем обычный идрис

Vyacheslav
18.09.2017
10:59:22
теперь там элаборатор

Alex
18.09.2017
10:59:33
это старые, новые через elab да, pruviloj называются

а в идрисе можно писать доказательства как в коке?
можно, вот прямо щас переписываю с кока доказательство про деление целых бинарных чисел с остатком

выходит повербознее чем в коке, но суть та же самая

вербозность в основном за счет того что имплициты сырые, приходится термы руками раздавать

вроде в блодвене имплициты как-то поудобнее в ядро будут вшиты

kana
18.09.2017
11:02:41
Блодвен?

Alex
18.09.2017
11:02:56
кодовое название для идриса на идрисе

kana
18.09.2017
11:03:11
О, нашел

Alex
18.09.2017
11:03:13
точнее пока только чекера для tt

kana
18.09.2017
11:06:23
В смысле? Нет, вернуть пруфы, что элементы те же, относительно легко, нужно просто доказать, что при перестановке двух элементов элементы остаются такими же, и каждая операция свопа будет этот пруф возвращать, они будут наслаиваться друг на друга. Сам я такое сейчас не напишу, но код видел

Ilya
18.09.2017
11:08:54
Я говорю, что доказательством того, что новый массив - это отсортированный старый, может служить явное предъявление перестановки

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