как установить haskell platform на windows 10
Играем в Haskell
Я замечательно провел время изучая Haskell в последние месяцы, и мне кажется, что сделать первые шаги в этом занятии сложнее, чем это могло бы быть на самом деле. Мне повезло работать в нужное время и в нужном месте, и в Facebook я прошел курс по Haskell от Bryan O’Sullivan, но Вы определенно сможете влиться в тему и без чужой помощи. Для этого можно поиграть в Haskell на сайте Try Haskell, а в конечном счете установить себе GHC.
Устанавливаем Haskell Platform (GHC)
The Haskell Platform — это Glasgow Haskell Compiler (GHC) и стандартная библиотека «в полной комплектации». GHC не единственный компилятор Хаскеля, но Вам нужен именно он. Другая реализация, достойная внимания, Hugs, подходит больше в академических целях, чем в практических.
Инструкция написана для пользователей Mac OS X 10.8 с установленным Homebrew (и свежей версией Xcode), но разобраться с тем, как сделать то же самое на других платформах с помощью Haskell Platform должно быть просто. Текущая версия Haskell Platform на данный момент 2012.4.0.0.
Устанавливаем Cabal
Cabal — это Общая Архитектура Сборки Приложений и Библиотек (Common Architecture for Building Applications and Libraries) для Хаскеля. В паре с Hackage, Cabal похож по смыслу на такие инструменты, как CPAN для Perl, pip для Python или же gem для Ruby. Вероятно, Вы будете разочарованы, но всё же он не так уж и плох.
Cabal устанавливает свои пакеты в
/.profile — прим. переводчика):
Прежде чем начать пользоваться cabal, нужно развернуть список доступных пакетов. Иногда Вам придется запускать эту команду, в частности перед установкой или обновлением пакетов.
На данный момент мы имеем
Самым первым Вашим пакетом должен стать инсталлятор Cabal:
Устанавливаем ghc-mod (улучшенная поддержка Emacs/Vim)
ghc-mod пригодится Вам для интеграции GHC с Emacs или Vim. Того же самого эффекта можно достичь в Sublime Text 2 и ghc-mod с помощью SublimeHaskell. Я пока что пользовался только интеграцией с Emacs. Пользователи Vim могут воспользоваться hdevtools, т.к. он гораздо быстрее, и настолько же точен (см. комментарий kamatsu)
Настройку Вашего собственного Emacs я освещать не стану (но можете воспользоваться моим текущим
Устанавливаем Cabal-dev (песочница для сборки)
Cabal-dev — это инструмент, который упростит Вам установку приложений на Хаскеле. Он похож на virtualenv для Python и rvm для Ruby, но подход к использованию различается. Он спасет Вас от «кабальского ада», в котором ни у кого не получается устанавливать одни пакеты из-за конфликтов с зависимостями других.
Используйте cabal-dev вместо простого cabal для сборки везде, где это возможно. Главный компромисс состоит в том, что Вам придется тратить (гораздо) больше времени на компиляцию пакетов, которые уже и так были установлены где-то в другом месте (и забивать дисковое пространство), но это безусловно справедливая плата.
В данный момент ведутся некоторые работы над влючением поддержки Сборок в Песочнице и Изолированных Окружений в cabal-install, так что информация о cabal-dev, которая есть в этом посте, потеряет актуальность через несколько месяцев (лет?).
Установка инструментов при помощи cabal-dev
Настройка GHCi
ghci — это интерактивный интерпретатор GHC (REPL, схожий с python или irb в терминале). За подробной документацией рекомендую обратиться к GHC Users Guide (Chapter 2. Using GHCi). Вы будете проводить там много времени, играя с кодом, так что предлагаю для начала укоротить приветствие. Оно выглядит так:
Когда Вы начнете импортировать модули, приветствие разрастется, и на самом деле это никому не нужно.
Можно также использовать команду :set prompt «h> » при каждом запуске GHCi, но это тоже лишнее.
Hackage хрупкий, но существуют (неофициальные) зеркала
К сожалению, Hackage не славится своей надежностью. Я не знаю в чем проблема, но надеюсь, что они с этим что-то сделают в ближайшее время. Есть обходной путь (Обходные пути в случае падения Hackage), нужно всего-лишь использовать репозиторий из hdiff на hdiff.luite.com или с hackage.csc.stanford.edu.
Для этого нужно поменять строчку в
После изменений, нужно обновить список пакетов
И не забудьте вернуть все обратно спустя некоторое время!
Создаем проект (с помощью cabal-dev)
В конечном счете Вы бы и сами это осознали, но самый быстрый способ начать проект — начать его с cabal-dev. Вот что нужно сделать для простенькой программы.
hs-hello-world.cabal
HelloWorld.hs
Вот что нужно, чтобы собрать и «установить» программу в текущей песочнице:
Исполняемый файл получается великоват, но также он статически линкован. Можно скопировать его на любую машину с такой же операционной системой и архитектурой, и он просто будет работать.
Можно сэкономить немного времени, пропустив шаг установки:
Так как у проекта нет зависимостей, которые нужно устанавливать, можно немного срезать углы.
Например, запустить с помощью интерпретатора, без компиляции:
Да и вовсе можно собрать его без cabal-dev (или cabal ):
Но для более сложного проекта, можно использовать cabal-dev ghci (после cabal-dev configure && cabal-dev build ). Прошу заметить, что в этом случае код будет загружен в интерпретатор автоматически:
Основы GHCi
Некоторые базовые трюки GHC которые хорошо бы знать. Помимо тех, которые я указал здесь, советую изучить Chapter 2. Using GHCi.
:t показывает тип выражения
:m добавляет модуль в текущую область видимости
:l подгружает модуль, :r перезагружает
Рекомендованное чтение
Я отметил для себя следующие книги и сайты полезными, пока учил Хаскель самостоятельно.
Книги
Сайты
#haskell на Freenode — то место, где Вы в любое время найдете несколько сотен человек, заинтересованных в Хаскеле. Отличное место для поиска помощи.
Приготовимся
Мы не можем начать изучение языка без испытательного полигона. Установим Haskell.
Сделать это можно несколькими способами, мы выберем самый удобный. Называется он The Haskell Tool Stack. Эта маленькая утилита — всё, что вам понадобится для работы с Haskell.
Haskell — кроссплатформенный язык, работающий и в Linux, и в macOS OS X, и даже в Windows. Однако в 2008 году я навсегда покинул мир Windows, поэтому все последующие примеры взаимодействия с командной строкой подразумевают Unix-way. Впрочем, если вы всё-таки используете Windows, будьте уверены — всё описанное ниже заработает и у вас.
Вся конфигурация и примеры кода опробованы мною на Ubuntu 16.04.1.
Устанавливаем
Идём сюда и забираем нужную нам версию. Общий Unix-вариант установки предельно прост:
На момент написания книги я использовал stack версии 1.4.0. Если у вас более старая версия — непременно обновитесь. Если же более новая — у вас что-нибудь может работать не совсем так, как описано ниже, поскольку stack всё ещё активно развивается.
Haskell-инфраструктура — экосистема, краеугольным камнем которой является ранее упомянутый компилятор GHC. Haskell является компилируемым языком: приложение представляет собой обыкновенный исполняемый (англ. executable) файл.
Haskell-проект — среда для создания приложений и библиотек.
Haskell-библиотеки — кем-то написанные решения, спасающие нас от изобретения велосипедов.
Разворачиваем инфраструктуру
В результате на ваш компьютер будет установлена инфраструктура последней стабильной версии. Жить всё это хозяйство будет в только что созданном каталоге
Hi World
Создадим наш первый Haskell-проект:
Теперь переходим в каталог real и собираем проект командой:
Но можно и упростить себе жизнь, выполнив команду:
В результате исполняемый файл будет скопирован в каталог
/.local/bin (подразумевается, что такой каталог у вас уже имеется). Кстати, полезно добавить
Модули: знакомство
Откроем модуль src/Lib.hs :
Теперь откроем модуль app/Main.hs :
Все модули в наших проектах можно разделить на две части: те, которые мы берём из библиотек и те, которые мы создали сами. Библиотеки — это уже кем-то написанные решения, в последующих главах мы познакомимся со многими из них. Среди библиотек следует выделить одну, так называемую стандартную библиотеку. Модули из стандартной библиотеки мы начнём использовать уже в ближайших главах. А одна из глав будет полностью посвящена рассказу о библиотеках: из неё мы подробно узнаем, откуда берутся библиотеки и как их можно использовать.
Для любопытных
И ещё. При создании проекта мы могли бы использовать схему simple вместо предлагаемой по умолчанию. Для этого проект нужно было создать командой:
Да, мы могли бы воспользоваться данной схемой, однако в этом случае мы не увидели бы механизма импорта одного модуля в другой. Я рад, что вы познакомились с импортом уже сейчас, ведь в последующих главах мы будем постоянно использовать различные модули из многих библиотек.
Правильная установка Haskell. Утилита Stack
На настоящий момент установка и использование Haskell через утилиту stack является безусловно предпочтительным.
Некоторые могут возразить «да мне нужно то только несколько примеров решить, это, говорят, можно чём угодно». Вот именно что говорят. А на практике у вопрошающего что то не идёт. А большинство тех кто ему может ответить используют stack. Ну и вот. Денис Шевченко в свой книжке описывал установку и начало использования стека под MacOS. Я взял чистую Win 7 x32 (что было) и поставил stack. Историю этого действия с комментариями я и предлагаю почтеннейшей публики.
Заходим на https://haskell-lang.org/get-started
Там щёлкаем на иконке Windows, выбираем разрядность, скачиваем и запускаем.
Далее соглашаемся добавить каталог в PATH и ещё одну переменную окружения.
По завершении инсталляции вызываем консольное окно (окно командной строки), набираем в ней stack и нажимаем Enter. По длинному сообщению можно понять что stack установлен.
Обновим сведения о пакетах, что бы stack ставил нам самые свежие.
stack update
— и придётся подождать.
Далее нужно выбрать каталог для своих экспериментов (а может и работы) на Haskell.
Я создал каталог c:\Users\User\Samples\Haskell Но вы можете создать любой другой.
Т.к. программы stack, компилятор и т.д. изначально линуксовые я воздерживаюсь от каталогов с именами содержащими пробелы и русские буквы.
И так, перейдя в c:\Users\User\Samples\Haskell я собираюсь создать проект.
Сразу же предвижу вопрос «А без проекта нельзя?», мне бы маленький файлик запустить.
Вообще то можно, но с проектом удобнее. В том числе с маленьким файликом.
Для проекта можно выбрать шаблон (шаблоны уже загружены по команде stack update и могут обновляться, так же как списки версий пакетов).
Интересно посмотреть список шаблонов:
stack templates
Из кратких комментариев к ним можно понять, что, по крайней мере для начала, большинство нам не понадобится. Многие шаблоны проектов предназначены для использования с конкретными пакетами или рассчитаны весьма на любителя. Однако, на этот список полезно иногда посматривать.
Для создания проекта можно просто опустить имя шаблона:
stack new имя-проекта
Каталог проекта окажется расположен в текущем подкаталоге.
Например, выполняем stack new tst1
Selecting the best among 10 snapshots.
Downloaded lts-8.12 build plan.
Populated index cache.
* Matches lts-8.12
Selected resolver: lts-8.12
Initialising configuration using resolver: lts-8.12
Total number of user packages considered: 1
Writing configuration to file: tst1\stack.yaml
All done.
И так, посмотрим содержимое файла src\main.hs
Можно, конечно, запустить программу по указанному пути, но проще, опять же через stack:
Как установить haskell platform на windows 10
designed to get you up and running quickly, making it easy to focus on using Haskell. You get:
Let’s get started
Note: Users who wish to make use of stack and want to ensure they are running the latest version may want to consider running «stack upgrade» and ensuring the proper path for stack-installed binaries is in their environment.
Other Operating Systems
Mac OS X
The recommended way to install the components of the mac platform is using ghcup to install ghc and cabal-install, and following the instructions at haskellstack.org to install stack.
Windows
The recommended way to install the components of the windows platform is using Chocolatey to install ghc and cabal-install, and following the instructions at haskellstack.org to install stack. Further details for Chocolatey usage are available here.
To get started perform these steps:
Linux
Note that distribution-packaged versions are typically behind the current platform release. If you prefer to use the latest version rather than the distribution-packaged version, then you may want to use the generic Linux installer.
If you can’t find your distribution then select Generic.
Select your distribution
Please select your distribution on the right.
Generic Linux
This is a generic distribution of the Haskell Platform. While it should work on most modern Linux distributions, you may want to use one of the distribution-specific options listed on the right. As GHC links against libgmp, you may need to install «libgmp-dev» using your package manager of choice.
The recommended way to install the components of the generic platform is using ghcup to install ghc and cabal-install, and following the instructions at haskellstack.org to install stack.
Ubuntu
Haskell Platform is available in your distribution’s package repository. Note that distribution-packaged versions are typically behind the current platform release. If you prefer to use the latest version rather than the distribution-packaged version, then you may want to use the generic Linux installer.
Debian
Haskell Platform is already available in your distribution’s package repository. Note that distribution-packaged versions are typically behind the current platform release. If you prefer to use the latest version rather than the distribution-packaged version, then you may want to use the generic Linux installer.
Linux Mint
Haskell Platform is already available in your distribution’s package repository. Note that distribution-packaged versions are typically behind the current platform release. If you prefer to use the latest version rather than the distribution-packaged version, then you may want to use the generic Linux installer.
Redhat
Haskell Platform is already available in your distribution’s package repository. Note that distribution-packaged versions are typically behind the current platform release. If you prefer to use the latest version rather than the distribution-packaged version, then you may want to use the generic Linux installer.
Fedora
Haskell Platform is already available in your distribution’s package repository. Note that distribution-packaged versions are typically behind the current platform release. If you prefer to use the latest version rather than the distribution-packaged version, then you may want to use the generic Linux installer.
Gentoo
Haskell Platform is already available in your distribution’s package repository. Note that distribution-packaged versions are typically behind the current platform release. If you prefer to use the latest version rather than the distribution-packaged version, then you may want to use the generic Linux installer.
More details can be found in the Wiki.
Build from source
If we don’t have a binary package suitable for your distribution you can build the Haskell Platform from source.
Download and extract the source tarball,
See the README file for build instructions.
Install/upgrade¶
For common Un*x operating systems (including macOS), all you need to do is run:
Binaries for other operating systems are listed below, and available on the GitHub release page. For the future, we are open to supporting more OSes (to request one, please submit an issue).
Binary packages are signed with this signing key.
If you are writing a script that needs to download the latest binary, you can use URLs like https://get.haskellstack.org/stable/
. (e.g. https://get.haskellstack.org/stable/linux-x86_64.tar.gz) that always point to the latest stable release.
Windows¶
We recommend installing to the default location with these installers, as that will make stack install and stack upgrade work correctly out of the box.
If in doubt: you should prefer the 64-bit installer.
You may see a «Windows Defender SmartScreen prevented an unrecognized app from starting» warning when you try to run the installer. If so, click on More info, and then click on the Run anyway button that appears.
Manual download¶
Download the latest release:
Unpack the archive and place stack.exe somewhere on your %PATH% (see Path section below) and you can then run stack on the command line.
Now you can run stack from the terminal.
macOS¶
We generally test on the current version of macOS and do our best to keep it compatible with the three most recent major versions. Stack may also work on older versions (YMMV).
Installer script¶
Manual download¶
Using Homebrew¶
If you have the popular brew tool installed, you can just do:
Notes¶
After installation, running stack setup might fail with configure: error: cannot run C compiled programs. in which case you should run:
If you are on OS X 10.11 («El Capitan») and encounter either of these problems, see the linked FAQ entries:
If you are on OS X 10.12 («Sierra») and encounter GHC panic while building, see this issue
Ubuntu¶
Debian¶
CentOS / Red Hat / Amazon Linux¶
There is also an unofficial Copr repo. Note that this Stack version may lag behind, so we recommend running stack upgrade after installing it.
Fedora¶
Fedora includes builds of stack, but the version may lag behind, so we recommend running stack upgrade after installing it.
openSUSE / SUSE Linux Enterprise¶
There is also an unofficial SUSE package. Note that this Stack version may lag behind, so we recommend running stack upgrade after installing it. To install it:
Add the appropriate OBS repository:
all needed is in distribution
SUSE Linux Enterprise 12
Arch Linux¶
There is an official package in the Arch community repository. So you can install it by simply doing:
Note that this version may slightly lag behind, but it should be updated within the day. The package is also always rebuilt and updated when one of its dependencies gets an update.
In order to use stack setup with older versions of GHC or on a 32-bit system, you may need the ncurses5-compat-libs AUR package installed. If this package is not installed, Stack may not be able to install older ( haskell-stack-tool package from there.
NixOS¶
Users who follow the nixos-unstable channel or the Nixpkgs master branch can install the latest stack release into their profile by running:
Alternatively, the package can be built from source as follows.
Clone the git repo:
Create a shell.nix file:
Install stack to your user profile:
For more information on using Stack together with Nix, please see the NixOS manual section on Stack.
Linux (generic)¶
Installer script¶
Manual download¶
Download the latest release:
Ensure you have required system dependencies installed. These include GCC, GNU make, xz, perl, libgmp, libffi, and zlib. We also recommend Git and GPG. To install these using your package manager:
Now you can run stack from the terminal.
If you don’t have that directory in your PATH, you may need to update your PATH (such as by editing
If you’re curious about the choice of these paths, see issue #153
Shell auto-completion¶
For more information and other shells, see the shell auto-completion page
China-based users¶
If you’re attempting to install stack from within China:
As of 2020-02-24, the download link has limited connectivity from within mainland China. If this is the case, please proceed by manually downloading (ideally via a VPN) and installing stack per the instructions found on this page pertinent to your OS.
After install, your
/.stack/config.yaml will need to be configured before stack can download large files consistently from within China (without reliance on a VPN). Please add the following to the bottom of the
/.stack/config.yaml file (for Windows: use the %STACK_ROOT%\config.yaml):
Using an http proxy¶
To use stack behind a http proxy with ip address IP and port PORT, first set up an environment variable http_proxy and then run the stack command. e.g.
Note that on most operating systems, it is not mandatory for programs to follow the «system-wide» http proxy. Some programs, such as browsers, do honor this «system-wide» http proxy setting, while other programs, including bash, do not. That means configuring «http proxy setting» in your Control Panel (Windows) or System Preferences (Mac) would not result in stack traffic going through the proxy.
Upgrade¶
There are essentially four different approaches to upgrade:
The stack tool itself ships with an upgrade command, which download a stack binary or build it from source and install it to the default install path (e.g.
If you’re using a package manager and are happy with sticking with the officially released binaries from the distribution (which may the lag behind latest version of Stack significantly), simply follow your normal package manager strategies for upgrading (e.g. apt-get update && apt-get upgrade ).
Install Older Versions¶
To install a specific version of stack, navigate to the desired version on the GitHub release page, and click the appropriate link under its «Assets» drop-down menu.
Copyright (c) 2015-2021, Stack contributors