www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

Tobi

Gepostet:
08.12.2007 14:44

Wie Module erstellen? (ghci)  
Hi,

ich habe folgendes Problem.
Ich habe ein Module:
module test where

foo :: Int -> Int
foo x = x


Dieses Module möchte ich jetzt in meiner 2. Datei laden:

import test
...


Doch wo muss ich mein Module test speichern? Das hab ich nicht verstanden und das steht auch irgendwie nirgendswo. Also wo muss ich meine Moduledatei speichern, damit ich sie so einfach laden kann im ghci. Die ganzen vordefinierten Module sind im "imports" Ordner, glaub ich jedenfalls. Die haben die Endung .hi, muss ich eine solche Datei erstellen? Aber wie mach ich das nun wieder? Ich bin ein bisschen verwirrt im Moment, hoffe ihr versteht mein Problem :)

MfG Tobi
Zum Seitenanfang    
 
Siracusa

Gepostet:
08.12.2007 19:37

   
Hallo Tobi,

du legst dir irgendwo einen beliebigen Arbeitsordner an, in dem du alle deine Haskell-Dateien speicherst (als ganz normale .hs-Dateien, nicht als .hi-Dateien!). Dann startest du den GHCi, indem du ihm den vollständigen Pfad deiner Hauptdatei aus diesem Verzeichnis angibst. Bei Windows reicht da meist ein Doppelklick auf die Datei. Ansonsten am besten in der Konsole in das Verzeichnis wechseln und dort den GHCi starten. Falls es dennoch Probleme dabei gibt, kannst du hier nochmal in aller Ausführlichkeit nachlesen, was zu tun ist: http://www.haskell.org/ghc/docs/latest/html/users_guide/ghci.html.

Es ist noch zu beachten, das Modul-Namen in aller Regel groß geschrieben und den gleichen Namen wie die zugehörige Datei haben müssen. Wenn dein Modulname also Test ist, sollte die Datei dazu Test.hs heißten. Möglicherweise geht der GHC damit auch recht liberal um, aber besser ist es allemal.

Damit du in deinem Hauptmodul auch alle Funktionen des anderen Moduls laden kannst, muß noch eine Exportliste definiert werden. Diese listet alle Funktionen auf, die das Modul exportieren soll. Das ganze sieht dann so aus:
-- Datei Test.hs
module Test (foo, bar) where
foo :: Int -> Int
foo x = x

bar = ...

-- Datei Main.hs
import Test

foobar x = foo (bar x)


Viele Grüße,

Siracusa
Zum Seitenanfang    
 
Tobi

Gepostet:
09.12.2007 12:40

   
Hi,

großes Dankeschön, habs hinbekommen :)
Nun kann ich endlich meinen Code auf mehrere Dateien auslagern ^^

Bis denne :)
Zum Seitenanfang