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

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

141
Должны ли мы определить типы для всего?

Недавно у меня возникла проблема с читабельностью моего кода. У меня была функция, которая выполняла операцию и возвращала строку, представляющую идентификатор этой операции, для дальнейшего использования (немного похоже на OpenFile в Windows, возвращающий дескриптор). Пользователь будет...

69
Динамически против статически типизированных языков изучения [закрыто]

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

66
Является ли система типов Haskell формально эквивалентной системе Java? [закрыто]

Я понимаю, что некоторые вещи проще / сложнее в одном языке, чем в другом, но меня интересуют только функции, связанные с типами, которые возможны в одном и невозможны / неактуальны в другом. Чтобы сделать его более конкретным, давайте проигнорируем расширения типов на Haskell, поскольку их так...

57
Как хранить «неизвестные» и «отсутствующие» значения в переменной, сохраняя при этом разницу между «неизвестными» и «отсутствующими»?

Считайте это «академическим» вопросом. Мне было интересно время от времени избегать значений NULL, и это пример, когда я не могу найти удовлетворительное решение. Давайте предположим, что я храню измерения там, где в некоторых случаях измерение, как известно, невозможно (или отсутствует). Я хотел...

53
Когда типовые испытания в порядке?

Предполагая язык с некоторой присущей безопасности типов (например, не JavaScript): Учитывая метод, который принимает a SuperType, мы знаем, что в большинстве случаев, когда у нас может возникнуть искушение выполнить тестирование типа для выбора действия: public void DoSomethingTo(SuperType o) { if...

53
Почему основные сильные статические ООП-языки препятствуют наследованию примитивов?

Почему это нормально и в основном ожидается: abstract type Shape { abstract number Area(); } concrete type Triangle : Shape { concrete number Area() { //... } } ... пока это не нормально и никто не жалуется concrete type Name : string { } concrete type Index : int { } concrete type Quantity : int {...

53
Как языки с типами Maybe вместо NULL обрабатывают краевые условия?

Эрик Липперт высказал очень интересную мысль в своем обсуждении того, почему C # использует тип, nullа не Maybe<T>тип : Согласованность системы типов важна; можем ли мы всегда знать, что необнуляемая ссылка ни при каких обстоятельствах не считается недействительной? Как насчет конструктора...

50
Что такое система типов?

Фон Я проектирую язык, как побочный проект. У меня есть рабочий ассемблер, статический анализатор и виртуальная машина для него. Поскольку я уже могу компилировать и запускать нетривиальные программы, используя созданную мной инфраструктуру, я подумал о том, чтобы выступить с презентацией в моем...

49
Есть ли причина иметь нижний тип в языке программирования?

Тип дна - это конструкция, которая в основном появляется в математической теории типов. Он также называется пустым типом. Это тип, который не имеет значений, но является подтипом всех типов. Если тип возвращаемого значения функции является нижним, это означает, что он не возвращает. Период. Может...

47
Каковы преимущества безопасности системы типов?

В JavaScript: Хорошие части Дугласа Крокфорда он упоминает в своей главе о наследовании: Другое преимущество классического наследования заключается в том, что оно включает в себя спецификацию системы типов. Это в основном освобождает программиста от необходимости писать явные операции приведения,...

45
Переменные приведения типов в PHP, какова практическая причина для этого?

PHP, как большинство из нас знает, имеет слабую типизацию . Для тех, кто этого не делает, PHP.net говорит: PHP не требует (или не поддерживает) явного определения типа в объявлении переменной; тип переменной определяется контекстом, в котором используется переменная. Нравится вам это или нет, PHP...

44
Почему Java не делает вывод типов?

Я всегда удивлялся, почему Java не делает вывод типов, учитывая, что язык такой, какой он есть, и его виртуальная машина очень зрелая. Google Go - это пример языка с превосходным выводом типов, который уменьшает количество набираемых текстов. Есть ли какая-то особая причина того, что эта функция не...

43
Почему (или почему нет) экзистенциальные типы считаются плохой практикой в ​​функциональном программировании?

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

37
Почему вывод типа полезен?

Я читаю код гораздо чаще, чем пишу код, и я предполагаю, что большинство программистов, работающих над промышленным программным обеспечением, делают это. Я предполагаю, что преимущество вывода типов заключается в меньшей детализации и меньшем количестве написанного кода. Но с другой стороны, если...

35
Действительно ли языки с динамической типизацией заслуживают всей критики? [закрыто]

Я прочитал несколько статей в Интернете о выборе языка программирования на предприятии. В последнее время популярными стали многие языки с динамической типизацией, например, Ruby, Python, PHP и Erlang. Но многие предприятия все еще используют статические типизированные языки, такие как C, C ++, C #...

33
Является ли система типов Haskell препятствием для понимания функционального программирования? [закрыто]

Я изучаю Haskell с целью понимания функционального программирования, ожидая, что я буду применять полученные знания на других языках (в основном Groovy, Python, JavaScript). Я выбрал Haskell, потому что у меня сложилось впечатление, что он очень чисто функциональный и не допускает никакой...

33
Почему именно Java не допускает числовые условия, такие как if (5) {…}, если C делает?

У меня есть эти две маленькие программы: С #include <stdio.h> int main() { if (5) { printf("true\n"); } else { printf("false\n"); } return 0; } Джава class type_system { public static void main(String args[]) { if (5) { System.out.println("true"); } else { System.out.println("false"); } } }...

30
Существуют ли шаблоны проектирования, которые возможны только в динамически типизированных языках, таких как Python?

Я прочитал соответствующий вопрос. Существуют ли какие-либо шаблоны проектирования, которые не нужны в динамических языках, таких как Python? и запомнил эту цитату на Wikiquote.org Замечательная вещь о динамической типизации - она ​​позволяет вам выражать все, что можно вычислить. А системы типов -...

30
Вывод типа в Java 8

Собирается ли введение новой лямбда-нотации (см., Например, эту статью ) в Java 8 какого-либо вывода типа? Если да, то как новая система типов повлияет на язык Java в...