| torsdag 31. desember 2009 18:15 | |||||||||||||||
Haskell og eksterne filer
For denne artikkelen går vi ut ifra at du har installert en fungerende Haskell implementasjon med interaktiv sessions. Hvordan du gjør dette kan du lese om her. Vi går også ut ifra at du har lest om grunnleggende Haskell aritmetikk og lister. Målet med denne artikkelen er å opprette en kildekodefil, skrive et lite program som beregner Fibonacci på to forskjellige måter, laste dette inn i Interpreter og kjøre det. Opprett og last inn kildekodefil i Haskell (WinHugs)1: Opprett ny fil med notepad eller tilsvarende. I vårt eksempel Load.hs 2: I filen skriver vi
Det som er verdt å merke seg her er at navnet på modulen tilsvarer filnavnet "Load" og "Load.hs" 3: Lagre filen. 4: I WinHugs "File" -> "Open", og velg den filen du nettopp opprettet.
5: Vi kan nå teste programmet vårt.
6: Vi har nå laget en ny module "Load", og lastet denne i Interpreteren vår. Den har da automatisk blitt satt til aktiv modul. Der vi tidligere har hatt "Prelude>" som promt har vi nå fått "Load>". Dette impliserer at også "Prelude" er en module, noe som stemmer. "Prelude" er standardmodulen som inneholder de grunnleggende definisjonene som : + * fst snd og så videre.
PS! Om du planlegger å kompilere modulen til et kjørbart program må den here Main, samt inneholde en main metode.
Husk også at Hugs ikke er en kompilator, kun en Interpreter. Men om du har lagt inn ghc kan du kompilere v.h.a denne kommandoen: ghc --make Main.hs -o main.exe Du får nå en kjørbar fil som du kan starte ved å skrive: main.exe Eventuellt vil Eclipse Haskell pluginen generere .exe filer for deg dersom du bruker denne. FibonacciFor de som er ukjent med Fibonacci tallrekken så anbefaler vi å ta en rask kikk her. Fibonacci rekken er definert på følgende måte: fib 0 = 1 Vi er optimistiske og klipper / limer dette rett inn i Load.hs og laster modulen inn på ny.
For morro skyld tar vi og med en tilfedig Java implementasjon. Du kan jo selv bestemme hvilken du likte best, spesielt m.t.p definisjonen av Fibonacci rekken. Og om du var i tvil, Haskell implementasjonen fungerer som den skal, og er et godt eksempel på enkelheten og oversiktligheten til språket.
NB! I siste eksempelet "fib 100" har jeg jukset. Denne tar så lang tid å evaluere rekursivt at jeg måtte slå opp resultatet istedetfor. Men poenget her var å vise at vi ved kun å bruke definisjonen på fibonacci rekken har laget et program som beregner et vilkårlig tall i rekken.
Oppgave: Finn en "feil" i fibonacci programmet definert over. Kan du lage et mer effektivt program for å beregne fibonacci rekken?
|
|||||||||||||||
| Sist oppdatert søndag 18. juli 2010 22:51 |