Haskell для реального мира: Глава 2. Типы и функции | Participants
|
- Statistics
- Participants
- Translate into Russian
- Translation result
- 99% translated in draft. Almost done, let's finish it!
If you do not want to register an account, you can sign in with OpenID.
Real World Haskell: Chapter 2. Types and Functions | Haskell для реального мира: Глава 2. Типы и функции | |
Why care about types? | — Может "зачем нам типы"? — blueboar2 | |
Every expression and function in Haskell has a type. For example, the value True has the type Bool, while the value "foo" has the type String. The type of a value indicates that it shares certain properties with other values of the same type. For example, we can add numbers, and we can concatenate lists; these are properties of those types. We say an expression «has type X», or «is of type X». | У любого выражения и любой функции в Haskell есть тип. Например, тип значения True — Bool, а строки "foo" — String. Тип значения свидетельствует о том, что оно имеет общие свойства с другими значениями такого же типа. Например, числа можно складывать, а списки — объединять; таковы свойства этих типов. Мы говорим, что выражение «имеет тип X», или «типа X». | |
Before we launch into a deeper discussion of Haskell's type system, let's talk about why we should care about types at all: what are they even for? At the lowest level, a computer is concerned with bytes, with barely any additional structure. What a type system gives us is abstraction. A type adds meaning to plain bytes: it lets us say «these bytes are text», «those bytes are an airline reservation», and so on. Usually, a type system goes beyond this to prevent us from accidentally mixing types up: for example, a type system usually won't let us treat a hotel reservation as a car rental receipt. | Прежде чем мы перейдём к более пристальному рассмотрению системы типов Haskell, давайте поговорим о том, зачем нам эти типы вообще сдались, для чего они хоть нужны? На самом низком уровне компьютер имеет дело с байтами, и кроме них нет практически никаких других структур. Что даёт нам система типов, так это абстракцию. Тип придаёт смысл обычным байтам, и мы можем сказать: "Эти байты — текст, те байты — забронированные билеты на самолёт" и т.п. Обычно система типов этим не ограничивается, она также не позволяет нам запутаться при работе с типами. Например, она, скорее всего, не позволит нам обращаться с заказом номера в гостинице как с квитанцией за прокат машины. | |
The benefit of introducing abstraction is that it lets us forget or ignore low-level details. If I know that a value in my program is a string, I don't have to know the intimate details of how strings are implemented: I can just assume that my string is going to behave like all the other strings I've worked with. | Польза от введения абстракции состоит в том, что она позволяет нам забыть или игнорировать низкоуровневые детали. Если я знаю, что некоторое значение в моей программе — строка, то мне не обязательно знать точные детали реализации строк: я просто считаю, что моя строка будет вести себя так же, как и все остальные строки, с которыми я работал. | |
What makes type systems interesting is that they're not all equal. In fact, different type systems are often not even concerned with the same kinds of problems. A programming language's type system deeply colours the way we think, and write code, in that language. | Любопытно, что не все системы типов одинаковы. В сущности, разные системы часто имеют дело с разными проблемами. Система типов языка программирования влияет и на подход к решению задач, и на то, как мы пишем код на этом языке. | |
Haskell's type system allows us to think at a very abstract level: it permits us to write concise, powerful programs. | Система типов Haskell позволяет нам думать на очень абстрактном уровне, писать краткие и мощные программы. | |
Haskell's type system | ||
There are three interesting aspects to types in Haskell: they are strong, they are static, and they can be automatically inferred. Let's talk in more detail about each of these ideas. When possible, we'll present similarities between concepts from Haskell's type system and related ideas in other languages. We'll also touch on the respective strengths and weaknesses of each of these properties. | Типы в Haskell обладают тремя интересными свойствами: они строгие, они статические, и они могут быть автоматически выведены. Давайте поговорим о каждой из этих идей более детально. Где это возможно, мы покажем сходство концепций системы типов Haskell и соответствующих идей в других языках. Мы также затронем сильные и слабые стороны каждого из этих свойств. |
License: Creative Commons Attribution-Noncommercial 3.0 License

Comment was deleted
— Вы не находите, что "для реального мира" как-то не по-русски звучит? По смыслу ближе "в реальных условиях". Что скажете? — m-kira
Или ещё лучше: "Практическое программирование на Haskell". — m-kira