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

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

2
Можно ли «запечь измерение в тип» в haskell?
Предположим, я хочу написать библиотеку, которая работает с векторами и матрицами. Можно ли объединить измерения в типы, чтобы операции несовместимых измерений вызывали ошибку во время компиляции? Например, я хотел бы, чтобы подпись точечного продукта была чем-то вроде dotprod :: Num a, VecDim d => Vector a d -> Vector a …

1
Мотивация и подводные камни (?) Ключевого слова auto в C ++ 11
Недавно я задавался вопросом, почему ключевое слово autoбыло выбрано в C ++ 11 для обозначения переменной, тип которой должен выводиться компилятором, как в auto x = 1; поскольку var кажется более распространенным в других языках программирования (например, C #, Scala, JavaScript), и Насколько я понимаю, новая семантика autoобратной совместимости разрывов …

24
Интересные или уникальные типы в языках программирования? [закрыто]
В настоящее время этот вопрос не очень подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, вызовет дебаты, споры, опрос или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и, возможно, вновь открыть, обратитесь за …

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

10
Почему наследование и полиморфизм так широко используются?
Чем больше я узнаю о различных парадигмах программирования, таких как функциональное программирование, тем больше начинаю сомневаться в разумности таких концепций ООП, как наследование и полиморфизм. Я впервые узнал о наследовании и полиморфизме в школе, и в то время полиморфизм казался прекрасным способом написания универсального кода, который позволял легко расширяться. Но …

5
Имеет ли смысл использовать объекты (вместо примитивных типов) для всего в C ++?
Во время недавнего проекта, над которым я работал, мне пришлось использовать множество функций, которые выглядят примерно так: static bool getGPS(double plane_latitude, double plane_longitude, double plane_altitude, double plane_roll, double plane_pitch, double plane_heading, double gimbal_roll, double gimbal_pitch, double gimbal_yaw, int target_x, int target_y, double zoom, int image_width_pixels, int image_height_pixels, double & Target_Latitude, …

9
Какие статически типизированные языки поддерживают типы пересечений для возвращаемых значений функции?
Начальная нота: Этот вопрос был закрыт после нескольких правок, потому что мне не хватало правильной терминологии, чтобы точно указать, что я искал. Затем Сэм Тобин-Хохштадт опубликовал комментарий, который позволил мне точно понять, что это было: языки программирования, которые поддерживают типы пересечений для возвращаемых значений функций. Теперь, когда вопрос был вновь …

2
Полезен ли параметрический полиморфизм более высокого ранга?
Я уверен, что все знакомы с общими методами формы: T DoSomething<T>(T item) Эта функция также называется параметрически полиморфной (ПП), а именно ПП ранга 1 . Допустим, этот метод может быть представлен с помощью функционального объекта в форме: <T> : T -> T То есть <T>означает, что он принимает один параметр …

9
Следует ли проверять значения перечисления с помощью модульных тестов?
Если у вас есть только перечисление со значениями (нет методов, которые можно было бы сделать в Java), и это перечисление является частью бизнес-определения системы, следует ли писать для него модульные тесты? Я думал, что они должны быть написаны, даже если они могут показаться простыми и избыточными. Я считаю, что то, …

3
В чем причина использования интерфейса по сравнению с типом с общими ограничениями?
В объектно-ориентированных языках, которые поддерживают параметры универсального типа (также называемые шаблонами классов и параметрическим полиморфизмом, хотя, конечно, каждое имя несет в себе различные коннотации), часто можно указать ограничение типа для параметра типа, например, для его наследования. из другого типа. Например, это синтаксис в C #: //for classes: class ExampleClass<T> where …

2
(Дис-) преимущества структурной типизации
Я только что посмотрел этот доклад Даниэля Спевака, в котором он рассказывает о преимуществах структурной типизации по сравнению с номинальной типизацией Scala и Java . Одним из примеров этого различия будет следующий код Java public interface Foo { public int length(); } public interface Bar { public int length(); } …

1
Почему Haskell не может избежать повторной оценки без ограничения мономорфизма?
Я только что закончил учить вас на днях, и я пытался разобраться в ограничении мономорфизма, как описано в Haskell Wiki . Я думаю, что понимаю, как MR может предотвратить повторные оценки, но я не понимаю, почему этих повторных оценок нельзя избежать гораздо более простыми способами. Я имею в виду конкретный …

2
Правильная терминология в теории типов: типы, конструкторы типов, виды / сортировки и значения
В ответ на предыдущий вопрос началась небольшая дискуссия о правильной терминологии для определенных конструкций. Как я не нашел вопрос (кроме этого , или что , что не совсем правильно) для решения этого ясно, что я делаю это новый. Сомнительные термины и их отношения: тип, конструктор типа, параметр типа, виды или …

1
Зачем вам нужны более высокие виды?
Некоторые языки допускают классы и функции с параметрами типа (например, List<T>где Tможет быть произвольный тип). Например, у вас может быть такая функция: List<S> Function<S, T>(List<T> list) Однако в некоторых языках эта концепция может быть расширена на один уровень выше, что позволяет вам иметь функцию с сигнатурой: K<S> Function<K<_>, S, T>(K<T> …

2
Стираются ли типы в Haskell?
У Haskell есть понятие «универсальных функций», которое имеет некоторое очевидное сходство с обычным языком - не имея опыта работы с Haskell или с обычным языком, я могу быть здесь весьма приблизительным. Это означает, что можно определить универсальное to_stringсредство для определения строкового представления для всех типов. Конечно, средство должно быть определено …

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