Начало работы с языком программирования Haskell
Haskell — это продвинутый, чисто функциональный язык программирования общего назначения. В этом руководстве рассказывается, как установить Haskell и как начало работы с языком программирования Haskell в Linux и Unix-подобных операционных системах.
Haskell можно установить тремя способами; установка вручную, с использованием стека и платформы Haskell. Установка Haskell с использованием стека на данный момент является официально рекомендуемым и самым простым методом.
Установите стек инструментов Haskell
Haskell Tool Stack — это кроссплатформенная программа для создания проектов Haskell. Благодаря Haskell Stack мы получаем комплексную среду разработки для Haskell. Используя стек инструментов Haskell, мы можем легко установить следующие компоненты:
- Stack: конструктор проектов Haskell, состоящих из нескольких пакетов.
- GHC: компилятор и интерпретатор программ Haskell.
- Haddock: генератор документации для пакетов Haskell,
- И тысячи пакетов могут быть установлены по требованию.
Сначала давайте установим стек Haskell с помощью команды:
wget -qO- https://get.haskellstack.org/ | sh
Или,
curl -sSL https://get.haskellstack.org/ | sh
Приведенные выше команды загрузят последнюю версию стека и сразу же установят ее.
Эти команды одинаковы почти для всех дистрибутивов Linux и FreeBSD. Однако сообщество Arch поддерживает официальную версию в репозитории [community]. Итак, если вы используете Arch Linux и/или любую другую систему на базе Arch, просто запустите следующую команду, чтобы установить последнюю стабильную версию Stack.
sudo pacman -S stack
После установки выполните следующую команду, чтобы включить в переменную среды PATH $HOME/.local/bin:
echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.bashrc
Обновляет изменения, внесенные в файл ~/.bashrc, с помощью команды:
source ~/.bashrc
Давайте посмотрим установленную версию Stack:
$ stack --version
Version 1.6.1, Git revision f25811329bbc40b0c21053a8160c56f923e1201b (5435 commits) x86_64 hpack-0.20.0
Чтобы обновить стек в любое время, просто запустите:
stack upgrade
Чтобы обновить индекс пакета, запустите:
stack update
Мы установили стек. Давайте продолжим и создадим новый проект.
Начало работы с языком программирования Haskell
Настройка нового проекта
Чтобы запустить наш новый проект, нам нужны некоторые файлы, такие как исходный код Haskell, package.yaml, stack.yaml, файл .cabal и несколько других каталогов. Мы можем создать эти файлы вручную. Однако в Haskell имеется множество предопределенных шаблонов. Таким образом, мы можем использовать его вместо того, чтобы создавать его вручную.
Чтобы просмотреть все доступные шаблоны, запустите:
stack templates
Теперь я собираюсь создать новый проект под названием "ostechnix" и использовать "new-template". Для этого запустите:
stack new ostechnix new-template
Пример вывода будет:
Downloading template "new-template" to create project "ostechnix" in ostechnix/ ...
The following parameters were needed by the template but not provided: author-email, author-name, category, copyright, github-username
You can provide them in /home/sk/.stack/config.yaml, like this:
templates:
params:
author-email: value
author-name: value
category: value
copyright: value
github-username: value
Or you can pass each one as parameters like this:
stack new ostechnix new-template -p "author-email:value" -p "author-name:value" -p "category:value" -p "copyright:value" -p "github-username:value"
Looking for .cabal or package.yaml files to use to init the project.
Using cabal packages:
- ostechnix/
Selecting the best among 12 snapshots...
Downloaded lts-10.0 build plan.
Populated index cache.
* Matches lts-10.0
Selected resolver: lts-10.0
Initialising configuration using resolver: lts-10.0
Total number of user packages considered: 1
Writing configuration to file: ostechnix/stack.yaml
All done.
Установка ГХК
Перейдите в каталог вновь созданного проекта, запустите загрузку «stack setup» и установите необходимый компилятор.
cd ostechnix/
stack setup
Эта команда установит правильный компилятор GHC в ваш новый проект Haskell. GHC будет установлен в изолированном месте. Это означает, что это не помешает какой-либо установке на уровне системы.
Обратите внимание, что GHC будет установлен в корневой каталог вашего глобального стека. Таким образом, вы не можете просто вызвать его из своей оболочки с помощью команды ghc. Вместо этого рассмотрите возможность использования: stack ghc, stack ghci, stack runghc или stack exec. Для получения дополнительной информации о путях запустите:
stack path
и..
stack exec env
Теперь мы создали новый проект и установили правильный компилятор для нашего проекта. Пришло время его построить.
Строительный проект
Чтобы собрать проект, запустите:
stack build
Убедитесь, что вы запускаете эту команду внутри каталога вашего проекта. После завершения сборки запустите исполняемый файл с помощью команды:
stack exec ostechnix-exe
Пример вывода будет:
someFunc
Обратите внимание, что исполняемый файл «ostechnix-exe» будет скрыт в каталоге ./.stack-work основного каталога вашего проекта.
Игра с Хаскеллом
Откройте компилятор ghci:
stack exec ghci
Или,
stack exec -- ghci
Вы попадете в командную строку ghci.
GHCi, version 8.2.2: http://www.haskell.org/ghc/ :? for help
Prelude>
Как и все остальные, начнем с «Привет, мир!».
Prelude> "hello world!"
"hello world!"
Давайте попробуем выполнить некоторые арифметические действия.
Prelude> 14+90
104
Prelude> 14-90
-76
Prelude> 34/2
17.0
Некоторые сложные операции:
Prelude> (67*98) - 50 - (24-2)
6494
Давайте выясним, какое число больше или меньше:
Prelude> max 34 17
34
Prelude> min 45 98
45
Найдите преемника:
Prelude> succ 89
90
Найдите данные входные данные равны или нет:
Prelude> 10 == 10
True
Prelude> 10 == 20
False
Prelude> "ostechnix" == "ostechnix"
True
Prelude> "ostechnix" == "windows"
False
Также легко использовать логические значения, как показано ниже:
Prelude> True && False
False
Prelude> True && True
True
Prelude> False || True
True
Prelude> False && False
False
По умолчанию имя приглашения — Prelude>. Вы можете изменить это значение на другое, например, ghci>, набрав:
:set prompt "ghci> "
Для помощи введите:
:?
Чтобы выйти, введите:
:quit
Или,
:q
Обратите внимание, что нам не нужно создавать каталог проекта. Мы можем начать работу со Stack, просто запустив stack ghci из оболочки. Он загрузит правильную версию GHC и вы попадете в командную строку prelude>.
Компиляция и запуск кода Haskell
Запустить код Haskell легко. Проверьте следующий пример.
Создайте файл под названием "ostechnix.hs" со следующим содержимым.
#!/usr/bin/env stack
-- stack --install-ghc runghc
main :: IO ()
main = putStrLn "Welcome To OSTechNix"
Теперь вы можете запустить эту программу с помощью команды:
$ stack ostechnix.hs
Welcome To OSTechNix
Вот еще один пример.
Создайте программу на Haskell с именем myhaskell.hs со следующим кодом:
module Main where
main :: IO ()
main = putStrLn "Welcome To OSTechNix!"
Затем скомпилируйте его с помощью команды:
stack exec -- ghc myhaskell.hs -o test.hs
Пример вывода будет:
[1 of 1] Compiling Main ( myhaskell.hs, myhaskell.o )
Linking ostechnix.hs ...
Наконец, запустите его, как показано ниже:
./test.hs
Welcome To OSTechNix!
Мы только что рассмотрели основы. Нам еще многому предстоит научиться! Если вам интересно узнать больше о программировании на Haskell, обратитесь к следующим ресурсам, чтобы изучить Haskell от основ до продвинутого уровня.
- Руководства по Haskell
- Изучите навык
- Реальный Haskell
- Попробуйте Haskell в своем браузере
- Официальная вики Haskell