Ich wollte ein paar Worte darüber verlieren, wie ihr am einfachsten Haskell auf euer System bekommt.
Bevor ich anfange:
- für meinen Workshop auf dem Developer Open Space ist es ziemlich egal: wenn ihr GHCi zum laufen bekommt (extrem einfach) reicht das!
- vieles klingt komplizierter als es wirklich ist
- in die Fettnäpfchen (Cabal Hell) tritt man in der Regel erst wenn es in die real World geht
Haskell selbst ist im Prinzip zwar ein so eine Art Standard (aktuell Haskell 2010) und es gibt mehr als eine Implementation, trotzdem ist der Glorious/Glasgow Haskell Compiler der defacto-Standard und
es macht IMO kaum Sinn irgendwas anderes zu installieren.
die Möglichkeiten
- sogenannte minimal Installers (bzw. nur GHC/Cabal): das würde ich empfehlen (siehe unten)
- Stack – wird wohl zukünftig der Standard werden und die Platform ablösen
- Haskell Platform: einfach aber aus meiner Sicht nicht mehr empfehlenswert
Cabal Hell … WAT?
Der Compiler selbst ist auch nicht das, was ab und an Probleme macht – es ist der Paket-Manager (wir .NET Leute kennen das ja ..) – das System selber heißt Cabal und ist genauso gut oder schlecht wie jedes andere Paket-System da draußen (jedenfalls meiner Meinung nach) – im Gegenteil, da sitzen eine Menge richtig kluger Köpfe dahinter. Die Probleme fangen da an, wo man cabal-install
benutzt um Pakete global zu installieren – das geht mit cabal-install
nämlich nur (momentan) in einer Version …
Es beginnt dann häufig mit der Haskell Platform die eben einige Standard-Pakete global installiert – die Idee war ein Batteries included System abzuliefern und unter Windows war das lange die einzige Möglichkeit, weil einige Pakete (mit FFI) schwer zu kompilieren/installieren waren (man benötigt ein kleines lokales Linux – wie z.B. MSYS).
Seit längerer Zeit gibt es zudem die Möglichkeit lokal eine sogenannte Sandbox einzurichten, damit habe ich kaum mehr Probleme, aber das ist nicht die einzige Lösung.
Stack ist glaube ich die Zukunft einige sind aber extrem begeister von Nix – dazu kann ich leider nichts sagen – habe ich noch nicht ausprobiert.
bins / PATH
In jeden Fall sollte man dafür sorgen, dass die Programme (ghc
, ghci
, cabal
, …) in der PATH
Variable landen – wenn ihr Programme mit cabal
installiert (z.B. Alex
und Happy
, aber auch ghc-mod
oder cabal-install
direkt (als Update)) solltet ihr den Platz wo das landet ebenfalls mit in den PATH aufnehmen – der globale Cache dafür landet unter Linux und co. normalerweise in ~/.cabal/bin
, wenn ihr eine Sandbox verwendet dann eben lokal in ./.cabal-sandbox/bin
– unter Linux setze ich mir hierfür dann normalerweise nur einen Symlink in ein Verzeichnis ~/bin
das ich mir einmal in den Path aufgenommen habe – so funktioniert es praktisch alles in Sandboxes zu installieren – von ghc-mod
bis Idris
und Agda
!
Unter Windows und MacOS erledigen das die Installer, die ich unten erwähne sowieso (ok: um die Sandbox-Geschichte müsst ihr euch trotzdem kümmern, falls ihr das macht).
Mein Vorschlag
Linux
Selbst nutze ich Linux Mint – bitte habt Verständnis, dass ich nicht auf jede Distro eingehen kann … ehrlich gesagt zeige ich euch hier auch nur die Ubuntu/Mint Variante – ich denke aber, dass jeder Linux Nutzer es schaffen wird sich seine Version von GHC zu besorgen – glaube nicht das es eine Distro gibt wo das nicht mit in den Paketen ist – wahrscheinlich uralt, aber für den Workshop ist das egal 😉
Persönlich hole ich mir hier einfach nur den GHC, alex, happy und cabal-install und zwar von hier: GHC Launchpad von Herbert V. Riedel – da gibt es eine schöne Anleitung dazu.
OSX
Ich habe nicht die Megaerfahrung mit Macs, aber ich habe auf meinen Spiel-MBP (den ich glaube ich 6 Monate nicht mehr an hatte) Haskell for Mac OS X installiert und das funktionierte wunderbar!
Windows
Hier nutze ich selbst den Minimum GHC Installer – die Plattform reicht für den Workshop aber auch, falls ihr es einfach haben wollt.
Hab ich es geschaft?
Ruft einfach euere Console bzw. Terminal auf und gebt ghci
ein – wenn ihr mit sowas:
GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help
Prelude>
begrüßt werdet seit ihr good to go für den Workshop
das nächste Mal
Sag ich was zu Editoren/IDEs (Spoiler: vergesst die IDEs lieber) …
Fragen einfach rein in die Comments (oder per Mail, Twitter, whatever)
Have FUN