ΠΊΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ 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