Fundeps и GADT: когда становится решаемой проверка типов?

Я читал исследовательскую статью о Haskell и о том, как реализован HList, и задавался вопросом, когда описанные методы являются, а когда нет, разрешимы для средства проверки типов. Кроме того, поскольку вы можете делать аналогичные вещи с GADT, мне было интересно, всегда ли проверка типа GADT разрешима.

Я бы предпочел цитаты, если они у вас есть, чтобы я мог читать / понимать объяснения.

Спасибо!

Этот вопрос лучше задать авторам исследования. Это немного эзотерично для Stack Overflow. (Мне всегда удавалось с большим успехом связываться с исследователями для получения комментариев. Обычно они в восторге, кто-нибудь читает их работы.)

Chris Conway 08.09.2008 03:58

Я считаю такое отношение (что теоретические вопросы не имеют отношения к прагматическому форуму) вредно и устарело. Прагматические подходы должны быть открыты для новых технологий, потому что эти технологии, вероятно, могут улучшить повседневную деятельность в ближайшем будущем. например: функциональные возможности в C# / python.

rcreswick 08.09.2008 05:30

Тем не менее, комментарий Чирса, вероятно, верен с практической точки зрения. Я бы хотел, чтобы этого не было.

rcreswick 08.09.2008 05:32

Ркресвик: Я не думаю, что этот вопрос не имеет значения. Я просто не думаю, что сообщество Stack Overflow может дать удовлетворительный ответ.

Chris Conway 08.09.2008 07:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
16
4
1 114
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы, наверное, уже видели это, но в исследовании Microsoft есть сборник статей по этой проблеме: Тип Проверочные документы. Первый описывает разрешимый алгоритм, фактически используемый в компиляторе Glasgow Haskell.

Статьи, на которые есть ссылки, являются хорошими статьями, но, похоже, они не отвечают на мой вопрос.

Jason Dagit 16.09.2008 07:33
Ответ принят как подходящий

Я считаю, что проверка типов GADT всегда разрешима; это вывод, который неразрешим, поскольку требует унификации более высокого порядка. Но средство проверки типа GADT - это ограниченная форма проверок проверки, которую вы видите, например. Coq, где конструкторы создают срок доказательства. Например, классический пример встраивания лямбда-исчисления в GADT имеет конструктор для каждого правило редукции, поэтому, если вы хотите найти нормальную форму термина, вы должны указать ему, какие конструкторы приведут вас к нему. Проблема с остановкой перешла в руки пользователя :-)

Неплохо подмечено. Так что я думаю, меня интересует, когда GHC-вывод типа GADT разрешим.

Jason Dagit 24.06.2011 22:09

Другие вопросы по теме