www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

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

Logo - DracheHaskell-Forum

Alexej

Gepostet:
21.05.2006 13:57

instance Show  
will hier mal eine Show Instance realisieren - bin aber noch Anfänger - bitte um Hilfe :)


module BinBaum where
data BinTree a = Empty | Node (BinTree a) Int (BinTree a)

instance (Show a) => Show (BinTree a) where
show Empty = "-"
show (Node (l) x (r)) = show (l) ++ x ++ show (r)

aTree = Node (Empty) 5 (Empty)


irgendwie fehlt da Num oder so denk ich mal - vielleicht kann ja jemand helfen und am besten noch paar Worte dazu schreiben, danke
Zum Seitenanfang    
 
Jacke

Gepostet:
21.05.2006 15:33

   
module BinBaum where
data BinTree a = Empty | Node (BinTree a) Int (BinTree a)

instance (Show a) => Show (BinTree a) where
show Empty = "-"
show (Node (l) x (r)) = show (l) ++ show x ++ show (r)

aTree = Node (Empty) 5 (Empty)


so gehts...Smilie
Zum Seitenanfang    
 
Alexej

Gepostet:
21.05.2006 18:43

   
ok danke - bin echt froh dass es hier aktive Leute gibt
- ich hätte aber noch ne Frage: warum kann ich mein Baum nicht anzeigen wenn ich einfach aTree eingebe - da kommt ne Fehlermeldung

-bin echt no0p auf dem gebiet
Zum Seitenanfang    
 
Jacke

Gepostet:
21.05.2006 19:07

   
naja du hast dir den baum ja als eigenen datentypen definiert..und haskell selbst hat dafür keine showfunktion...der kann nur die einfachen sachen sowas wie Int String umgehen... deswegen mußtest du nen eigenes show schreiben...und das haskell eigene show damit überladen...wie gesagt die frage ist jedenfalls garnicht mal so schlecht ...
show gibt übrigens immer nen string zurrück deswegen mußtest du alles mit ++ verketten..
in der Prelude ist show so definiert
show::a->String

z.b. für Bool

instance Show Bool where
show True ="True"
show False ="False"
Zum Seitenanfang    
 
Alexej

Gepostet:
21.05.2006 19:46

   
im Prinzip könnte ich auch deriving Show dahinter schreiben aber ich will ja dass er es so ausgibt wie ich es definiere - naja und da macht er irgendwie Probleme er meckert halt - naja ich lese mich mal weiterhin durch tausende von Seiten.
Zum Seitenanfang    
 
Jacke

Gepostet:
21.05.2006 20:19

   
ich hab auch noch nie nen prog auf anhieb richtig geschrieben...also mach dir nix draus
Zum Seitenanfang    
 
Alexej

Gepostet:
21.05.2006 21:23

   
so klappt es wunderbar!!! also danke für deine Aufmerksamkeit und Hilfe!!!
module BinBaum where
data BinBaum = NIL | Knoten BinBaum Int BinBaum deriving (Eq,Read)

instance Show BinBaum where
show (NIL) = "-"
show (Knoten (NIL) x (NIL)) = "("++ show x ++")"
show (Knoten (l) x (r)) = "-"++show (l) ++ show x ++ show (r) ++ "-"


bigBaum = Knoten (Knoten (Knoten (NIL) 3 (NIL)) 8 (Knoten (NIL) 9 (NIL))) 17 (Knoten (Knoten (NIL) 29 (NIL)) 34 (Knoten (NIL) 41 (NIL)))
smallBaum = Knoten (Knoten (NIL) 8 (NIL)) 17 (Knoten (NIL) 34 (NIL))

insert :: Int->BinBaum->BinBaum
insert a NIL = Knoten (NIL) a (NIL)
insert a (Knoten (l) x (r)) | a <= x = (Knoten (insert a l) x (r))
| otherwise = (Knoten (l) x (insert a r))

inorderTreeWalk :: BinBaum -> [Int]
inorderTreeWalk NIL = []
inorderTreeWalk (Knoten (l) x (r)) = if (l /= (NIL)) then inorderTreeWalk l ++ [x] ++ inorderTreeWalk r
else [x]
searchTree k NIL = False
searchTree k (Knoten (l) x (r)) | x == k = True
| k < x = searchTree k l
|otherwise = searchTree k r
Zum Seitenanfang    
 
Jacke

Gepostet:
30.05.2006 10:49

   
na klar hab ich doch gerne gemacht :-)
Zum Seitenanfang