www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

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

Logo - DracheHaskell-Forum

Asnnah

Gepostet:
02.07.2006 02:57

Frage zur Typ-Generierung  
Hallo,

wie kann ich einen Typ erzeugen, der entweder ein Integer ist oder der String "inf"??? Und wie kann ich damit arbeiten ohne zu wissen, ob in der Variable nun "inf" steckt oder ein Integer?

Asnnah
Zum Seitenanfang    
 
Jacke

Gepostet:
02.07.2006 08:16

   

du kannst deine Funktion so neutral schreiben das sie mit beiden arbeitet :

z.b
laenge::[a]->Int
laenge []= 0
laenge (x:xs)=1+(laenge(xs))
in length kannst du jede liste reintun...egal welcher art

dann erzeugst du dir einen eigenen Typen


data MeinTyp = I Int |S String deriving (Eq,Ord,Show,Read)

test::[MeinTyp]
test=[(I 3),(S "Hallo"),(I 7),(S "hi")]



und
laenge test
gibt 4 zurrück

gruß jacke

Zum Seitenanfang    
 
Asnnah

Gepostet:
02.07.2006 11:09

   
Oh danke das hilft mir weiter :-)
Zum Seitenanfang    
 
Asnnah

Gepostet:
02.07.2006 11:35

   
Geht die Variante auch irgendwie ohne S und I, weil dann beim Ausgeben der der Testliste immer das S und das I stehen???
Zum Seitenanfang    
 
Siracusa

Gepostet:
02.07.2006 15:30

   
Hallo,

also wenn es nur um die Ausgabe geht, kannst du statt die Instanz der Klasse Show automatisch ableiten zu lassen, deine eigene definieren:
data MeinTyp = I Int | S String
deriving (Eq, Ord, Read) -- <-- ohne Show

instance Show MeinTyp where
show (I int) = show int
show (S str) = show str


Dann sieht deine Ausgabe so aus: [3,"Hallo",7,"hi"]

Viele Grüße,

Siracusa
Zum Seitenanfang