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

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

2
Почему поведенческий подтип неразрешим?
Работа Лискова в этой области была сосредоточена на поведенческих подтипах, которые помимо безопасности системы типов, обсуждаемой в этой статье, также требуют, чтобы подтипы сохраняли все инварианты, гарантируемые супертипами в некоторых контрактах. [3] Это определение подтипа обычно неразрешимо, поэтому его нельзя проверить с помощью средства проверки типов. От: http://www.wikiwand.com/en/Subtyping#/Function_types

1
Использование классов типов Haskell для обеспечения коммутативности
Я хочу определить класс типов для геометрических объектов, которые могут пересекаться вместе: class Intersect a b c | a b -> c where intersect :: a -> b -> c -- Language extensions: -XMultiParamTypeClasses, -XFunctionalDependencies Идея состоит в том, чтобы иметь функции пересечения общего назначения, которые могут обрабатывать объекты разных …

3
Чем экзистенциальные типы отличаются от интерфейсов?
Учитывая экзистенциальный тип T = ∃X.{op₁:X, op₂:X→boolean} и этот общий интерфейс Java: interface T<X> { X op₁(); boolean op₂(X something); } Каковы принципиальные различия между экзистенциальным типом и интерфейсом Java? Очевидно, что есть синтаксические различия и объектная ориентация Java (которая также включает такие детали, как скрытые thisпараметры и т. Д.). …

4
Как именно компилятор восстанавливается после ошибки типа?
Я прочитал несколько статей, статей и раздел 4.1.4, глава 4 « Компиляторы: принципы, методы и инструменты» (2-е издание) (он же «Книга Дракона»), в которых все обсуждается тема исправления синтаксических ошибок компилятора. Однако, после экспериментов с несколькими современными компиляторами, я увидел, что они также восстанавливаются после семантических ошибок, а также синтаксических …

3
Дженерики и Тип-стирание
Обобщения в Java реализованы с использованием стирания типов. JLS говорит, что вдохновением была обратная совместимость. Где, как и с другой стороны, дженерики C # являются reifiable. Теоретически, что является преимуществами и недостатками, если Generics будет «стирать» или «переопределять»? На что-то не хватает Java?

1
Что банки на самом деле используют в качестве типа данных для денег? [закрыто]
Закрыто . Этот вопрос должен быть более сфокусированным . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он был сосредоточен только на одной проблеме, отредактировав этот пост . Закрыто 4 года назад . Я знаю несколько хороших вариантов : Большие целые числа (например, int64_t, …

5
класс на языке ООП и тип
В теории языка программирования тип - это набор значений. Например, тип "int" - это набор всех целочисленных значений. В языках ООП класс - это тип, не так ли? Когда класс определен с более чем одним членом, например class myclass{ int a; double b; } Когда мы говорим о классе, мы …

2
Вывод типа в Голанге / Хаскеле
Я читал, что на самом деле Go не имеет истинного вывода типа в том смысле, в котором функциональные языки, такие как ML или Haskell, имеют, но я не смог найти простого для понимания сравнения двух версий. Может ли кто-нибудь объяснить в общих чертах, как вывод типа в Go отличается от …

1
Математика должна была понять теорию позади системы типов Хаскелла?
Недавно я глубоко заинтересовался Хаскеллом. Пытаясь изучить новые концепции (например, ключевое слово forall и монаду ST ) и систему типов Хаскеля в целом, я постоянно сталкиваюсь с понятиями из теории категорий и лямбда-исчисления . Итак, мне интересно: Какие другие разделы математики важны для глубокого понимания системы типов Хаскелла? Могу ли …

5
Существуют ли языки программирования, которые позволяют задавать арифметику для типов?
Из любопытства, есть ли языки, которые позволяют вам задавать арифметику для типов для создания новых типов? Что-то вроде: interface A { void a(); void b(); } interface B { void b(); void c(); } interface C = A & B; // has b() interface D = A | B; // …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.