www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

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

Logo - DracheHaskell-Forum

vorherige Seite 1 2 3 4 5 6 nächste Seite

echsel

Gepostet:
21.01.2005 17:26

   
Ich habe ne Antwort bekommen:

in dem 5er-Tupel von Paaren
( (autoren , Liste von Autoren ),
(titel , Titel des Buches ),
(verlag , Verlag in welchem das Buch erschienen ist ),
(jahr , Erscheinungsjahr des Buches ),
(preis, Buchpreis in Euro ) )

müssen Sie für die kursiv dargestellten Elemente natürlich geeignete Datenobjekte von Haskell wählen, um die gewünschten Informationen darstellen zu können.
Eine Darstellung der Form

( (autoren,[Simon Thomson,Dan Gookin]), (...), ... )

kann nicht richtig sein, da Buchstabenfolgen, die mit einem Großbuchstaben beginnen, nur als Klassen oder Modulnamen dienen oder Namen von speziellen Datenobjekten sind, z.B. True und False. Sofern die Bedeutung der Namen nicht in Prelude.hs deklariert ist, müssen Sie in Ihrem Programm eigene Deklarationen dafür angeben. Ich glaube nicht, daß Sie das für alle Namen von Personen tun wollen! - Die Verwendung von Zeichenketten ist hier sicher sinnvoller.

Ihr Vorschlag ist aber auch in diesem Sinne nicht korrekt:
((autoren,"Simon Thomson"),(titel,"Haskel the art of programming"),(jahr,("1998")...)

1) bei autoren ist eine Liste von Autoren anzugeben, bei Ihnen steht nur eine Liste von Buchstaben
2) beim Paar (jahr, xxx) kann xxx eine Zeichenkette sein, aber sie haben dann keine Möglichkeit, direkt mit diesem Objekt zu rechnen, z.B. in der Form xxx-5, sondern müssen die Zeichenkette immer erst in eine Zahl umwandeln
3) Bemerkung 2 gilt auch für das Paar (preis, ppp)
ENDE :)

Also beim ([("Simon Thomson"),("tufftuff")],"The craft of functional Programming", ... ) denke ich sind schon die richtege Datenobjekte:)
Und ich verstehe nicht examplelist. Alle Typen wie Autor,Titel usw. sollen die Paaren sien.
in exampleList=new_entry (new_entry [] ([("Simon Thomson"),("tufftuff")],"The craft of functional Programming","Addison-Wesley","1999","39,90e"))
sehe ich einzelne Einträge. Ich weiss nicht, ob man Slüssel "autoren"... usw. verlassen kann. Die muss man irgendwie berücksichtigen.

ps. Danke dass du mir immer noch hilfst


Smilie

MfG
echsel
Zum Seitenanfang    
 
Jacke

Gepostet:
21.01.2005 22:46

   
ok ich mach mir bis sonntag mal nen kopf...garnich mal so einfach was er da will...hmm was kann mir nich so richtig vorstellen was er jetzt nun für schlüssel will...die string idee scheint ihm ja wenigstens schonmal zuzusagen...gutgut...
ich meld mich sonntag wieder...seufz werd wohl doch nicht um data rumkommen...

gruß jacke
ps: helf dir doch gerneSmilie
Zum Seitenanfang    
 
Jacke

Gepostet:
26.01.2005 17:01

   
also so weit bin ich erstmal...die show_funktion funktioniert jetzt auch...
wegen den schlüsselwörtern mach ich mir noch einen kopf
ich hab noch 2funktionen mit büchern geschrieben...ist objektorientierter...;)
und man kann damit dann auch show_book besser testen...
show_book ruft man auf mit :
show_book book...
bei den typen hab ich abgeändert das man jetzt ne liste von autoren eingeben kann und das der preis nen Float ist und das jahr nen Int...damit man die typen nicht umwandeln muß...so wie das dein prof wollte...
type Author=(String,[String])
type Titel=(String,String)
type Publisher=(String,String)
type Year=(String,Int)
type Price=(String,Float)
type Booklist=[(Author,Titel,Publisher,Year,Price)]

exampleList::Booklist
exampleList=new_entry (new_entry [] book) book2

book::(Author,Titel,Publisher,Year,Price)
book=(("author",[("Simon Thomson"),("tufftuff")]),("titel","The craft of functional Programming"),("publisher","Addison-Wesley"),("year",1999),("price",39.95))

book2::(Author,Titel,Publisher,Year,Price)
book2=(("author",[("Dan Gookin")]),("titel","Haskell für Dummies"),("publisher","MitP"),("year",1998),("price",99.99))

new_entry::Booklist->(Author,Titel,Publisher,Year,Price)->Booklist
new_entry list ((author,a),(titel,t),(publisher,pub),(year,y),(price,pr)) =[(("author",a),("titel",t),("publisher",pub),("year",y),("price",pr))]++list

searchTitel::Booklist->String->[String]
searchTitel eList s=[(t)|((author,a),(titel,t),(publisher,pub),(year,y),(price,pr))<-eList,substr s t]

substr :: String -> String -> Bool
substr [] _ = True
substr (_:_) [] = False
substr (x:xs) (y:ys) = substr (x:xs) ys || f_substr (x:xs) (y:ys)
where
f_substr [] _ = True
f_substr (_:_) [] = False
f_substr (x:xs) (y:ys) = (x==y) && f_substr xs ys

allAuthors :: Booklist->[Author]
allAuthors eList=[(a,author)|((a,author),(t,titel),(p,publisher),(y,year),(pr,price))<-eList]

num_List::Booklist->[(Int,Titel)]
num_List eList= zip [1..length titels] titels
where titels=[(titel)|(author,titel,publisher,year,price)<-eList]


--search_book::Booklist->String->(Author,Titel,Publisher,Year,Price)
--search_book eList t=[((a,author),(ti,titel),(p,publisher),(y,year),(pr,price))|((a,author),(ti,titel),(p,publisher),(y,year),(pr, price))<-eList,substr t titel]

show_s::[(String)]->IO()
show_s x = sequence_(map putStrLn (x))

show_book::(Author,Titel,Publisher,Year,Price)-> IO()
show_book ((author,a),(titel,t),(publisher,pub),(year,y),(price,pr))=show_s x
where x=(a++s)
s=t:pub:( show y):(show pr):[]


so und dann hab ich noch ne hilfsfunktion show_s geschrieben...mit der man Listen von strings auf verschiedenen zeilen ausgeben kann...dafür benutz ich sequence_ die funktion gibt es nämlich schon damit kann man von [IO()] ->IO()
achso und noch was das show in show_book benutz ich um die Int s in nen string umzuwandeln...
kuck am besten nochmal alles durch und frag mich wenn du was nicht verstehst...

gruß jacke
Zum Seitenanfang    
 
Jacke

Gepostet:
26.01.2005 19:20

   
also ich hab jetzt ne idee mit den schlüsselwörtern...folgendes wenn ich
data Author=Author [String]
schreibe und dann das so benutze
a1::Author
a1=((Author [("Dan Gookin"),("Achim")])
wäre das ok..???.
dann ist das Schlüsselwort zwar nicht durch nen Komma vom rest getrennt aber man könnte es wenigstens so verwenden???
kannst du deinen Prof das mal mailen ob ihm das so reichen würde??? am besten ganz schnell...das noch abzuändern wäre recht einfach...;)
ich hab meinen tutor aus der uni die frage zu den schlüsselwörtern auch mal geschickt...
hoffentlich meldet er sich bald...

gruß schaky
Zum Seitenanfang    
 
echsel

Gepostet:
26.01.2005 19:29

   
hallo Jakce!

Super, ich sende es sofort und wir werden sehen was er sag

MfG
echsel
Zum Seitenanfang    
 
echsel

Gepostet:
26.01.2005 23:35

   
Hurra!

endlich hat es geklappt Smilie
habe noch ein tipp bekommen:
"Man kann ein neues Element x am Anfang der Liste xs mit [x]++xs hinzufügen oder aber die Form x:xs verwenden."
aber sowieso ist richtig

MfG
echsel
Zum Seitenanfang    
 
Jacke

Gepostet:
27.01.2005 09:19

   
ja das weiß ich ja...das mit dem doppelpunkt hab ich ja gemacht...
kann man die schlüsselwörter nun so verwenden?

wenn ja dann mach ich mich gleich ans ändern und dann sind wir fertig...

gruß jacke
Zum Seitenanfang    
 
Jacke

Gepostet:
28.01.2005 09:40

   
ich dachte des prog muß ganz schnall fertig werden warum postest du denn nich???
Zum Seitenanfang    
 
echsel

Gepostet:
28.01.2005 15:19

   
Hey Jacke,

Mein rechner ist Tot :/ - eigentlich Windows. Muss System neu Instalieren. Aber vorgestern habe ich von meinem beliebsten Prof. bescheid bekommen, dass heute ich ein Testat von Programmierung schreiben muss (Haskel + Prolog):)))
So gesten bin ich nach Plan bis 20Uhr in der Schule und musste mich noch für heute vorbereiten. Aber habe ich ganz gut geschrieben und hoffe an gute Note. Das Testat + Belege (Haskell und Prolog) = Vordiplom :)))
So hatte ich kein Zeit .... aber jetzt instaliere ich Windows neu und geht los :)
Zum Seitenanfang    
 
Jacke

Gepostet:
28.01.2005 16:57

   
also mußt du das prog nicht mehr abgeben...?
Zum Seitenanfang    
 

vorherige Seite 1 2 3 4 5 6 nächste Seite