Вопросы с тегом «type-systems»

3
Типы классов против объектных интерфейсов
Я не думаю, что понимаю классы типов. Я где-то читал, что думать о классах типов как о «интерфейсах» (из ОО), которые реализует тип, неправильно и вводит в заблуждение. Проблема в том, что я испытываю проблемы, видя их как нечто иное, и как это неправильно. Например, если у меня есть класс …

2
Как вы получаете исчисление конструкций из других точек в лямбда-кубе?
Говорят, что КО является кульминацией всех трех измерений лямбда-куба. Это не очевидно для меня вообще. Я думаю, что я понимаю отдельные измерения, и комбинация любых двух, кажется, приводит к относительно простому объединению (возможно, я что-то упускаю?). Но когда я смотрю на CoC, вместо того, чтобы выглядеть как комбинация всех трех, …

2
Какие части теории гомотопического типа невозможны в Agda или Coq?
Когда мы смотрим на книгу «Гомотопическая теория типов» - мы видим следующие темы: Homotopy type theory 2.1 Types are higher groupoids 2.2 Functions are functors 2.3 Type families are fibrations 2.4 Homotopies and equivalences 2.5 The higher groupoid structure of type formers 2.6 Cartesian product types 2.7 S-types 2.8 The …

4
Одинарная параметричность против двоичной параметричности
Недавно я очень заинтересовался параметричностью после просмотра статьи LICS Бернарди и Мулена 2012 года ( https://dl.acm.org/citation.cfm?id=2359499 ). В этой статье они усваивают унарную параметричность в системе чистого типа с зависимыми типами и подсказывают, как можно расширить конструкцию до произвольных арностей. Я видел только двоичную параметричность, определенную ранее. Мой вопрос: что …


1
Математическое (категориальное) описание классов типов
Функциональный язык можно рассматривать как категорию, где его объектами являются типы и функции морфизмов между ними. Как классы типов вписываются в эту модель? Я предполагаю, что мы должны рассматривать только те реализации, которые удовлетворяют ограничению, которое имеет большинство классов типов, но которые не выражены в Haskell. Например, мы должны рассматривать …

1
Зависимые типы от церковно-закодированного типа в PTS / CoC
Я экспериментирую с системами чистого типа в лямбда-кубе Барендрегта, особенно с наиболее мощным, исчислением конструкций. Эта система имеет сорта *и BOX. Для справки ниже я использую конкретный синтаксис Morteинструмента https://github.com/Gabriel439/Haskell-Morte-Library, который близок к классическому лямбда-исчислению. Я вижу, что мы можем эмулировать индуктивные типы с помощью некоторого церковно-подобного кодирования (так называемый …

2
Компилятор для зависимого типа намного сложнее, чем интерпретатор?
Я изучил кое-что о реализации зависимых типов, как этот учебник , но большинство из них - реализация интерпретаторов. Мой вопрос, кажется, что реализация компилятора для зависимого типа намного сложнее, чем компилятор, потому что вы действительно можете оценить аргументы зависимого типа для проверки типа. Так Правильно ли мое наивное впечатление? Если …

3
Система типов на основе теории наивных множеств
Как я понимаю, в компьютерных науках типы данных не основаны на теории множеств из-за таких вещей, как парадокс Рассела, но, как и в реальных языках программирования, мы не можем выразить такие сложные типы данных, как «множество, которое не содержит себя», можем ли мы Скажите, что на практике тип - это …

2
Интуиция за строгой позитивностью?
Мне интересно, может ли кто-нибудь подсказать мне, почему строгая положительность индуктивных типов данных гарантирует строгую нормализацию. Чтобы было ясно, я вижу, как наличие отрицательных явлений приводит к расхождению, то есть путем определения: data X where Intro : (X->X) -> X мы можем написать расходящуюся функцию. Но мне интересно, как мы …

1
Можно ли сортировать `sort` по элементарной аффинной логике?
Следующий λ-член здесь в нормальной форме: sort = (λabc.(a(λdefg.(f(d(λhij.(j(λkl.(k(λmn.(mhi))l)) (h(λkl.l)i)))(λhi.(i(λjk.(bd(jhk)))(bd(h(λjk.(j (λlm.m)k))c)))))e))(λde.e)(λde.(d(λfg.g)e))c)) Реализует алгоритм сортировки для церковно-закодированных списков. То есть результат: sort (λ c n . (c 3 (c 1 (c 2 n)))) β→ (λ c n . (c 1 (c 2 (c 3 n)))) По аналогии, sort_below = λabcd.a(λef.f(λghi.g(λj.h(λkl.kj(ikl)))(hi))e(λgh.h)) (λe.d)(λe.b(λf.e(f(λghi.hg)(λgh.cfh)))) …

1
Теория гомотопического типа и теоремы Гёделя о неполноте
Теоремы о неполноте Курта Гёделя устанавливают «неотъемлемые ограничения всех, кроме самых тривиальных аксиоматических систем, способных выполнять арифметику». Теория гомотопического типа обеспечивает альтернативную основу для математики, однолистную основу, основанную на высших индуктивных типах и аксиому однолистности . В книге HoTT объясняется, что типы - это высшие группоиды, функции - это функторы, …

2
Типы собственности и логика разделения
Виды собственности и логика разделения, похоже, имеют схожие цели, контроль над владением и алиасами. Возможно, стоит также добавить: возможность написания модульных спецификаций. Что известно об отношениях между типами собственности и разделительной логикой?


1
Каковы возможные реализации классов типов Haskell и каковы их (не) преимущества?
Насколько я знаю, функция Haskell с ограничениями классов типов внутренне компилируется в функцию с дополнительными аргументами, которые получают словари с необходимыми реализациями каждого конкретного класса типов. Есть ли другие возможности, как скомпилировать классы типов? Если да, каковы их (не) преимущества? И какие компиляторы их используют?

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.