@haskellru

Страница 408 из 1551
illiatshurotshka❄️
16.09.2017
18:27:58
бесконечность что ли

kana
16.09.2017
18:28:54
да, похоже

а, ну да, бесконечность гарантированно

тут же для выражения типа используют его мощность. У универсума мощность - алеф нуль

Google
illiatshurotshka❄️
16.09.2017
18:51:59
а ⊤ принадлежит себе?

kana
16.09.2017
19:10:31
хз, в идрисе есть Type 1, который содержит в себе Type, потом Type 2, который содержит Type 1

аналогично в hott: U, U_1, U_2

illiatshurotshka❄️
16.09.2017
19:11:22
тип Type может зависеть от числа в idris?

kana
16.09.2017
19:12:27


illiatshurotshka❄️
16.09.2017
19:12:51
?

а, у них в faq есть

kana
16.09.2017
19:20:06
короче, написал функцию, которая отдает тип аргумента

getType : (a : ty) -> Type getType _ {ty} = ty



лол просто

Abbath
16.09.2017
19:21:48
Это Idris?

kana
16.09.2017
19:22:06
да

Google
Sergey
16.09.2017
21:05:26
подкасты о функциональщине https://www.fpcasts.com/

? animufag ?
16.09.2017
21:09:16
и есть что-нибудь ок?

(скорей всего англоязычный подкаст наискучнейшая трата времени)

Sergey
16.09.2017
21:12:45
и есть что-нибудь ок?
на вкус и цвет. мне например ок этот http://typetheorypodcast.com/2014/08/episode-1-peter-dybjer-on-type-theory-and-testing/

kana
16.09.2017
21:43:04
их бесконечно, судя по книге

Евгений
16.09.2017
21:43:20
А, ну ок

kana
16.09.2017
21:43:23
достать что-то больше Type 1 я не могу

illiatshurotshka❄️
16.09.2017
21:43:27
но получить третий нельзя же

Евгений
16.09.2017
21:44:05
В агде по уровням можно даже forall делать

но получить третий нельзя же
Это как? Тогда его просто нет же. Или там хитрое падение иерархии?

kana
16.09.2017
22:42:25
Да просто нет синтаксиса такого для получения, или я не знаю

Идрис все Type n к Type приводит

А самому n указать нельзя, увидеть я его смог только через :t Type

Vyacheslav
16.09.2017
22:47:29
ну просто у тебя коснтрукция Type 1 интерпретируется как вызов конструктора Type c параметром

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

data AIResult a where AIResult :: SAIIntent b -> AIMeta -> (ActionToParam b) -> AIResult b

singletons [d| data AIIntent = IntentTask |]

но я не понимаю как написать функцию которая будет возвращать тип AIResult a

потому что у меня всегда выскакивает ошибка про rigid variable, из чего я делаю вывод, что у переменной a типе AIResult ограничение, что это kind AIIntent

Google
Vyacheslav
16.09.2017
22:52:38
а в возвращаемом значении — это просто *, но как связать ее я не понимаю. В Idris такое обычно решается зависимой парой, в хаскелле я нашел в гисте какую-то имплементацию но пока не уверен, что она мне поможет

ЧЯДНТ?

kana
16.09.2017
22:57:48
Я ничего не понял, но может какой PolyKind, чтобы заменить * на какой-нибудь полиморфный AIResult (a :: k)

illiatshurotshka❄️
17.09.2017
00:26:40
Из A |= not not A
это классическая логика?

Andrei
17.09.2017
00:33:17
Не понимаю, чем не устраивает монадическая модель сайд-эффектов?

World->(World, a)

Это никак не мешает редукции лямбда термов.

Alex
17.09.2017
00:34:42
это классическая логика?
нет, классическая это когда наоборот not (not A) => A

illiatshurotshka❄️
17.09.2017
00:35:35
|= это же entails

то есть тоже самое

melancholiac
17.09.2017
12:10:51
я правильно понимаю что в хаскелле есть 2 типа функций: те которые генерируют thunk'и и те которые форсят вычисление этих thunk'ов? ведут ли себя эти два типа как потоки в ситуации производитель-потребитель? т.е. очевидно что форсящая функция требует от thunk'а столько сколько нужно ей. но может ли thunk ей "вежливо отказать" (как потребитель производящий данные медленее, чем их поглощает потребитель)?

Yuriy
17.09.2017
12:12:30
как отказать? данные будут производиться, коли запрошены

Yuriy
17.09.2017
12:13:21
потребитель будет ждать

melancholiac
17.09.2017
12:13:29
ну например есть функция читающая файл и обрабатывающяя его. причем вторая намного быстрее первой

ага

значит ждать

Yuriy
17.09.2017
12:18:10
производитель-потребитель — в случае ленивости, пожалуй, плохой подход

для чтения файла одновременно с с обработкой правильнее использовать не лень, а какое-нибудь сопроцедурное решение, например, streaming, pipes, conduit

там уже можно управлять энергичностью порождения и потребления

Google
Yuriy
17.09.2017
12:22:34
или взять очередь и к ней обращаться из разных нитей, если хочется параллельности

melancholiac
17.09.2017
12:23:07
спасибо

учту

Yuriy
17.09.2017
12:24:20
а ленивость оставить для чистых вычислений

Alexandr
17.09.2017
14:44:21
может кто-нибудь объяснить как получить compiled form в Krivine's machine? Или может кто-нибудь знает хороший источник, где нормально объясняют имплементацию машины?

Rinat
18.09.2017
06:39:02
А кто-нибудь в курсе чем отличается appendCompactNoShare от appendCompact? Написано: "This function differs from appendCompact in that it will not preserve internal sharing in the passed in value (and it will diverge on cyclic structures)." Не распарсил фразу до скобок.

Alexander
18.09.2017
06:41:20
если есть структура в которой есть общие части, например let x= 1:x

то appendCompact её компактно расположит, и то, что x общий будет сохранено

а appectCompactNoShare - разойдётся

или если есть дерево где есть 2 одинаковые ветки (одна и та же ссылка), то в случае appendComapctNoShare они будут полностью сериализованы

с Share там будет ссылка

т.е. меньше размер посылаемой структуры, но сложнее строить

Rinat
18.09.2017
06:44:00
А, все. Понял, спасибо :-)

Ща пишу либу для преобразования вигнера-вилли, и там GC жестит.

Alexander
18.09.2017
08:15:01
@HaskellMouse ты уже с настройками GC игрался?

-A, -n

они очень неудачные по дефолту

Pavel
18.09.2017
09:17:27
Сейчас будет очень плохо сформулированные вопросы :с 1) Существует ли возможность в идрисе создать биекцию между значениями и типами т.е. 42 :: Num 42, например? 2) Существует ли возможность автоматизировать это создание? 3) Существует ли возможность при этом всём сохранить человечность кода?

kana
18.09.2017
09:24:39
Синглтоны хочешь?

Google
Pavel
18.09.2017
09:24:41
А чего не в чатик по идрису?
такой есть на русском?

Евгений
18.09.2017
09:25:57
Конечно. Правда завсегдатаи с этим чатом сильно пересекаются: https://t.me/joinchat/AAAAAD9SWO_tLd7rJ9S7Ig

Pavel
18.09.2017
09:26:06
Синглтоны хочешь?
не совсем хочу, чтобы когда я делаю вот так: pls : Num a -> Num b -> Num (a + b) pls = + мне можно было бы выводить тип по реализации, а не реализацию по типам

Alexander
18.09.2017
09:52:08
идрис же выводит тип по реализации, минимум чтобы проверить

другое дело, что там для функций надо тип писать самому

это ж не haskell какой-нить, где это может рабоать

Pavel
18.09.2017
09:53:21
идрис же выводит тип по реализации, минимум чтобы проверить
но например sort : List a -> List a reverse : List a -> List a, а мне хотелось бы узнать возможность биекции реализация <-> тип

Alexander
18.09.2017
09:53:54
это невозможно в общем случае

с другой стороны типы функций недостаточные для описания

например если сделать sort :: UniqueList a -> AscendingUniqueList a

Евгений
18.09.2017
09:55:54
Alexander
18.09.2017
09:56:11
то тогда любая функция которая имеет такой тип будет сортировкой

при этом как известно из практики существует много разных сортировок отличающихся сложностью

любая подходит

Pavel
18.09.2017
09:57:00
то тогда любая функция которая имеет такой тип будет сортировкой
да и тогда множество реализаций разобьётся на классы эквивалентности, как и множество типов

kana
18.09.2017
09:57:18
Нужно так жн вернуть доказательство, что на выходе столько же и такие же элементы, иначе тип не говорит про эквивалентность

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