Изучай Haskell ради Добра! Модули | 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.
Learn You a Haskell for Great Good! Modules | ||
Modules | ||
Loading modules | ||
A Haskell module is a collection of related functions, types and typeclasses. A Haskell program is a collection of modules where the main module loads up the other modules and then uses the functions defined in them to do something. Having code split up into several modules has quite a lot of advantages. If a module is generic enough, the functions it exports can be used in a multitude of different programs. If your own code is separated into self-contained modules which don't rely on each other too much (we also say they are loosely coupled), you can reuse them later on. It makes the whole deal of writing code more manageable by having it split into several parts, each of which has some sort of purpose. | В Хаскеле модуль - это набор взаимосвязанных функций, типов и классов типов. Программа на Хаскеле это набор модулей, главный модуль подгружает остальные модули и использует функции определенные в них для того чтобы что-либо сделать. Разбиение кода на несколько модулей имеет множество преимуществ. Если модуль достаточно общий, экспортируемые им функции могут быть использованы во множестве программ. Если ваш код разделен на несколько самостоятельных модулей, не очень зависящих один от другого (мы говорим что они слабо связаны), модули могут многократно использоваться в разных проектах. Это делает непростую задачу написания кода легче, разбивая ее на несколько частей, каждая из которых имеет некоторое назначение. | |
The Haskell standard library is split into modules, each of them contains functions and types that are somehow related and serve some common purpose. There's a module for manipulating lists, a module for concurrent programming, a module for dealing with complex numbers, etc. All the functions, types and typeclasses that we've dealt with so far were part of the Prelude module, which is imported by default. In this chapter, we're going to examine a few useful modules and the functions that they have. But first, we're going to see how to import modules. | Стандартная библиотека Хаскеля разбита на модули, каждый из которых содержит взаимосвязанные функции и типы, служащие некоторой общей цели. Есть модуль для работы со списками, модуль для параллельного программирования, модуль для комплексных чисел, и так далее. Все функции, типы и классы типов, с которыми мы имели дело до сих пор, были частью модуля Prelude, он импортируется по умолчанию. В этой главе мы познакомимся с несколькими полезными модулями и их функциями. Но для начала, посмотрим как импортировать модули. | |
The syntax for importing modules in a Haskell script is import <module name>. This must be done before defining any functions, so imports are usually done at the top of the file. One script can, of course, import several modules. Just put each import statement into a separate line. Let's import the Data.List module, which has a bunch of useful functions for working with lists and use a function that it exports to create a function that tells us how many unique elements a list has. | Синтаксис для импорта модулей в скриптах на Хаскеле - import <module name>. Это надо сделать до того как начинать делать определения функций, поэтому импорт обычно делается в начале файла. Конечно же, один скрипт может импортировать несколько функций. Для этого поместите каждый оператор import на отдельную строку. Давайте импортируем модуль Data.List, который содержит кучу функций для работы со списками, и используем экспортируемую им функцию для того чтобы написать свою функцию, вычисляющую как много уникальных элементов содержит список. | |
import Data.List | ||
numUniques :: (Eq a) => [a] -> Int | ||
numUniques = length . nub | ||
When you do import Data.List, all the functions that Data.List exports become available in the global namespace, meaning that you can call them from wherever in the script. nub is a function defined in Data.List that takes a list and weeds out duplicate elements. Composing length and nub by doing length . nub produces a function that's the equivalent of \xs -> length (nub xs). | Когда выполняется import Data.List, все функции экспортируемые модулем Data.List становятся доступными в глобальном пространстве имен, что означает что вы можете вызывать их из любого места скрипта. nub это определенная в Data.List функция, которая принимает список и вычищает из него дубликаты. Композиция length и nub создает функцию, которая эквивалентна \xs -> length (nub xs). |
© Miran Lipovača. License: creative commons attribution noncommercial blah blah blah ... license

— Может стоить заменить "не шибко-то" на "не особо-то" или "не особенно-то", а то просторечное выражение, среди остального лаконичного текста, немного режет глаз. — lost-draftee-gmail
— Автор отпускает всякого рода шуточки, но не в этом месте. Убрал. — asinitsyn