В чем разница между скрытым типом и типом манифеста? - PullRequest
4 голосов
/ 19 декабря 2009

Может ли кто-нибудь дать мне четкое различие между системой скрытого и манифестного типа?

Ответы [ 4 ]

9 голосов
/ 19 декабря 2009

Иногда одна и та же концепция изобретается независимо в разных областях информатики. Это один из тех случаев. То, что сообщество Scheme называет скрытой и манифестом типизации, остальной мир называет неявной и явной типизацией. Смысл точно такой же:

При явном / манифесте при наборе текста программист должен явно записать типы, таким образом, типы становятся манифестом в исходный код.

При неявной / скрытой типизации программист не записывает типы. Таким образом, типы неявные или скрытые .

Обратите внимание, что вопрос неявной или явной типизации полностью ортогональн, например, динамическая и статическая типизация, сильная и слабая типизация, звуковая и некачественная типизация, безопасная и небезопасная типизация, номинальная и структурная против утка.

Например, Haskell неявно, строго, статично, здоров, безопасен, структурно типизирован.

5 голосов
/ 19 декабря 2009

См. пост Антона ван Страатена о Лямбде-Предельной. Он описывает скрытую типизацию в контексте схемы.

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

2 голосов
/ 19 декабря 2009

Скрытая типизация: стиль набора, который не требует явных объявлений типов. Это связано с печатью утки , динамической печатью и выводом типа Вы можете увидеть их на таких языках, как Python, Lisp, Haskell и т. Д.

Манифестная типизация: тип всех объявленных переменных явно указан. За ними следуют такие языки, как C, C ++ и Java.

1 голос
/ 20 декабря 2009

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

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

Однако проблема скрытых и манифестных типов - не та же проблема, что и при выводе типа.

Вывод типа в языке со статической типизацией относится к системе, которая может выводить типы для программных терминов без помощи программиста, обычно используя систему типов в стиле Хиндли-Милнера и унификацию. У Haskell и OCaml оба есть вывод типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...