Hi Stephan,

zo, eindelijk heb ik iets dat goed werkt. Niet 100% zoals ik 't zou willen, maar toch 98%. Verder op leg ik wel uit wat nu eigenlijk de bedoeling was.

BELANGRIJK: Lees eerst deze handleiding helemaal door vóór dat je begint. Zodat je weet wat je te wachten staat. En als je er niet lekker bij voelt, dan kun je me dat laten weten voor dat je iets doet waar je niet achterstaat of kan staan.

BELANGRIJK: Als je WinHugs niet in de `C:\Program Files` directory wilt installeren lees dan eerst dit

## Installatie WinHugs May 2006 zonder installer.

Dat is heel simpel gemaakt en bestaat uit een paar stappen:

Stap 1. Kopieer de directory `WinHugs` uit het archief naar "`C:\Program Files``"`

Stap 2. Dubbelklik op het bestand `WinHugsMay 2006.reg`. Je zult dan een message box krijgen:

Klik op "Yes" en dan antwoord Windows met:

Het gaat er om dat je "has been successfully entered into the registry" in de message box leest.

In principe ben je nu klaar. Ik heb je bovenstaande registry-file laten importeren("mergen") omdat ik je niet wilde lastig vallen met allerlei instructies om in de registry de opties voor de winhugs.exe in te laten stellen.

## WinHugs Shortcut

Stap 4. Om jezelf het leven wat gemakkelijker te maken stel ik voor dat je in je eigen "`My Documents`" directory een haskell werkdirectory aanmaakt, bijvoorbeeld "`Haskell Work`".

Stap 5. Vervolgens maak je een shortcut van de winhugs.exe in de "`C:\Programs Files``\WinHugs"` directory door de `winhugs.exe` file te selecteren en met je rechtermuisknopmenu "create shortcut" te kiezen. Er verschijnt dan in deze directory een shortcut met de naam: `Shortcut to` `winhugs.exe`. Deze naam kun je zonder gevolgen wijzigen in bijv. `WinHugs`. We moeten nu nog even de werkdirectory in de shortcut aan passen zodat die verwijst naar de werkdirectory die je zojuist in je "`My Documents`" hebt aangemaakt. Open het rechtermuisknopmenu en selecteer het menu item "`Properties`"

.

Stap 6. wijzig het pad in "Start in:" naar "`C:\Documents and Settings\Stephan\My Documents\Haskell Work`" (neem de double quotes aan het begin en het einde over!)

Stap 7. Klik op "OK" en je kunt de WinHugs shortcut naar je desktop kopiëren om vandaar WinHugs te starten.

## File Extensie

Met deze stap configureren we Windows zó dat de `.hs` file extensie met WinHugs wordt geassocieerd.

Stap 8. Dubbelklik op de file `HaskelFile.reg` en beantwoordt de message boxes hetzelfde als in Stap 2.

Stap 9. (optioneel) Als je een andere editor dan notepad wilt, lees dan dit.

Klaar!

## Andere installatie directory

Op zich is het geen probleem om WinHugs in een andere dan de "`C:\Program Files"` directory te installeren. Alleen zul je in dat geval de inhoud van moeten wijzigen en in bovenstaande stappen het andere directory pad gebruiken.

Op de eerste plaats moet je weten dat je in dit geval alleen absolute paden kunt gebruiken. Dat wil zeggen dat je het hele directory pad moet opgeven, dus de drive letter plus het hele pad vanaf de root. Bijvoorbeeld je wilt WinHugs installeren in de directory "`tjoep`" in de directory "`my programs`" op drive `Q:`. Dan wordt het absolute pad: "`Q:\my programs\tjoep"`. We gebruiken dit pad in de voorbeelden hier beneden.

Stap A.1. Ten eerste moet je de paden in het bestand `HaskelFile.reg` wijzigen (het liefst in notepad, niet in wordpad of word):

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\.HS]
    @="HaskellFile"

    [HKEY_CLASSES_ROOT\HaskellFile]
    "EditFlags"=dword:00000000
    "BrowserFlags"=dword:00000008
    @="Haskell File"

    [HKEY_CLASSES_ROOT\HaskellFile\DefaultIcon]
    @="C:\\Program Files\\WinHugs\\winhugs.exe,1"

    [HKEY_CLASSES_ROOT\HaskellFile\shell]
    @="Edit"

    [HKEY_CLASSES_ROOT\HaskellFile\shell\Edit]

    [HKEY_CLASSES_ROOT\HaskellFile\shell\Edit\command]
    @="\"C:\\Program Files\\WinHugs\\winhugs.exe\" /edit \"%1\""

    [HKEY_CLASSES_ROOT\HaskellFile\shell\Open]

    [HKEY_CLASSES_ROOT\HaskellFile\shell\Open\command]
    @="\"C:\\Program Files\\WinHugs\\winhugs.exe\" \"%1\""

We vervangen dus "`C:\Program Files"` door "`Q:\my programs\tjoep"` en krijgen:

BELANGRIJK: Als je het pad in `HaskellFile.reg` wijzigt, zorg er dan voor dat je alle backslashes "\" in het vervangende pad verdubbeld!!!

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\.HS]
    @="HaskellFile"

    [HKEY_CLASSES_ROOT\HaskellFile]
    "EditFlags"=dword:00000000
    "BrowserFlags"=dword:00000008
    @="Haskell File"

    [HKEY_CLASSES_ROOT\HaskellFile\DefaultIcon]
    @="Q:\\my programs\\tjoep\\WinHugs\\winhugs.exe,1"

    [HKEY_CLASSES_ROOT\HaskellFile\shell]
    @="Edit"

    [HKEY_CLASSES_ROOT\HaskellFile\shell\Edit]

    [HKEY_CLASSES_ROOT\HaskellFile\shell\Edit\command]
    @="\"Q:\\my programs\\tjoep\\WinHugs\\winhugs.exe\" /edit \"%1\""

    [HKEY_CLASSES_ROOT\HaskellFile\shell\Open]

    [HKEY_CLASSES_ROOT\HaskellFile\shell\Open\command]
    @="\"Q:\\my programs\\tjoep\\WinHugs\\winhugs.exe\" \"%1\""

Stap A.2.Vervolgens verander je het pad "`C:\Program Files"` in Stap 1 en Stap 5 in "`Q:\my programs\tjoep`".

Gedaan!

Terug

## Alternatieve Editor

Je kunt in WinHugs heel eenvoudig een andere editor aanroepen. Default staat notepad geconfigureerd. Maar via File|Options kun je op het tab-blad WinHugs een andere editor configureren. Houdt er rekening mee dat als er spaties in het absolute pad naar de editor executeable staan, dat je double quotes om het hele pad naar de executeable (incluis de executeable) zet!

Er zijn twee gratis OSS editors die goed kunnen werken voor Haskell onder MS Windows:

Vim, met een Haskell-mode voor Vim

Emacs met een Haskell-mode voor Emacs.

In beide gevallen moet je èn installeren, èn nogal wat uitzoek werk doen om ze aan de praat te krijgen. Maar dan heb je ook wat. Emacs heeft mijn persoonlijke voorkeur, zoiets als balpen vs. vulpen ;-)

Een heel goede editor is TextPad van Helios. Kost wel geld (30 US$), maar je kunt na downloaden het programma gewoon installeren en er mee werken. En enige dat er gebeurd, is dat je om de zoveel minuten een wegklikbaar nagging schermpje krijgt. Als je wil kun je mijn licentie code wel gebruiken.

Ook TextPad heeft een Haskell-mode. TextPad heeft wel een belangrijk voordeel boven de andere twee (Vim en Emacs). Dat is dat TextPad is gemaakt voor Windows en gedraagd zich beter als er vanuit een programma een redirect naar standard out wordt gedaan. Textpad pikt dat zonder problemen op. Als we naar de compiler oplossing moeten, dan raad ik aan om Textpad te gebruiken als "IDE".

Terug

## Verantwoording

Okay, there we go!. Er zijn zo'n beetje 3 min of meer moderne functionele programmeertalen die in academia en daarbuiten enige bekendheid genietente weten Standard ML, Caml en Haskell (hier kun je er meer over lezen). Verder zijn er nog een aantal programmeertalen c.q. omgevingen die veel concepten/constructies/ideeën hebben ontleend aan functionele programmertalen maar, min of meer, hybride zijn, dus niet puur functioneel. Erlang is bijvoorbeeld een eigen omgeving toegespitst op soft real time mulit-threaded toepassingen in (tele)communication oplossingen. Dan heb je ook nog Mozart-Oz van Peter van Roy en Seif Haridi dat verschillende programming paradigms bijelkaar brengt.

Waarom kies ik dan Haskell? Om een paar redenen. Ten eerste is het zo'n beetje de meest bekende functionele programmeertaal waarin alle moderne constructies verenigd zijn. Er zijn behoorlijk wat gratis tutorials, voorbeeldprogramma's, boeken, open source software, forum's etc beschikbaar. Dus hoef je om eventuele support niet verlegen te zitten.

De tweede reden is klinkt misschien wat theoretisch van aard, maar is ingegeven door de nodige praktijk ervaring met programmeren. Haskell is een van de typed functionele programmeertalen. SML en Caml zijn overigens ook typed, maar minder wijdverbreid. In een typed programmeertaal (zoals je wellicht weet) hebben alle waarden een type. Nu hebben typed functionele programmeertalen de prettige eigenschappen dat ze:

1. Een type checking systeem hebben; je kunt geen expressies opschreven of laten compileren die een verkeerde type waarde zou kunnen opleveren. Da's dus lekker safe;
2. De types, zeker met betrekking tot de complexere data types zoals een lijst, boom of wellicht nog ingewikkelder, kunnen in je programma worden gebruikt om de data structuur zèlf te herkennen, sterker de functies volgen de type structuur van een waarde. Er zijn veel gesofisticeerde programmeertechnieken die daar heel gerafineerd en effectief gebruik van maken (doe dat maar eens in C/C++. Hoewel in het Java en C# kan, kost het nogal wat overhead, en, opmerkelijk genoeg, is die overhead bij een goede implementatie nauwelijks merkbaar).
3. Efficiënt gecompileerd kunnen worden.

Bovendien wordt Haskell ook in het onderwijs gebruikt zodat er vaak heel redelijke interpreters zijn die je in staat stellen om meteen na dat je een expressie hebt ingetoetst te testen of je het wel goed hebt gedaan. In plaats dat je een bestand aan moet maken, moet compileren en vervolgens debuggen. Dat alles leidde tot de keuze van WinHugs. Maar waarom dan deze versie? Ach en wee, da's een heel verhaal. Maar in 't kort komt 't er op neer dat open source software dan wel gratis is, perfect werken doet 't niet. Zeker niet op een windows platform. Door een aantal kleine en voor een beginneling frustrerende bugs leken me de recentere versies van WinHugs niet geschikt om mee te beginnen. Vandaar de May 2006 versie.

Tja, als 't allemaal zo ideaal klinkt, waarom ben ik dan maar voor 98% tevreden met deze keuze? Dat zit 'm in het feit dat jij graag wilde hebben dat je zonder te installeren de software kan gebruiken. Nu maakt WinHugs op zo'n manier gebruik van de registry dat dit m.i. geen problemen zou moeten opleveren. Maar wellicht is jullie security policy nog strenger dan ik al dacht en loop je ondanks mijn arbeid en voorbereidingen er toch tegen aan.

Mocht dat 't geval zijn, dan heb ik nog wel een andere oplossing; we gaan dan naar de compilere toe. Deze heeft geen registry settings nodig om te kunnen werken. Alleen moet je dan de klassieke cyclus van "editting - compiling - running - debugging - editting" handmatig door. Tenminste als je niet een krachtiger editor mag/kunt gebruiken dan notepad.

Okay, dat was 't voor nu. Veel plezier d'r mee. En als er iets is, dan vertrouw ik erop dat je me dat laat weten.

gr

Twan