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  

echsel

Gepostet:
29.01.2005 18:46

   
hallo,

doch muss ich, aber mein rechner funktioniert nicht. HDD ist kaputt :/ Montag muss ich neue Festplatte kaufen. Ich habe aber das Programm gekukt und verstehe letzte Funktion nicht. Aber ich hate zu wenig Zeit. Ich analysiere das noch mall.

MfG
echsel
Zum Seitenanfang    
 
echsel

Gepostet:
30.01.2005 13:49

   
Hallo,

ich weiss nicht warum, aber bei mir Hugs berichtet ein Fehlermeldung

48 - Syntax error in input (unexpected `=')

--38
--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]
--41
show_s::[(String)]->IO()
show_s x = sequence_(map putStrLn (x))
--44
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):[]


außerdem in Funktion searchTitel schreibst du :
searchTitel eList s=[(t)|((author,a),(titel,t),(......

und schon in allAuthors:
allAuthors eList=[(a,author)|((a,author),(t,titel),(.........

ist die reihenfolge (a,author) oder (author,a) nicht wichtig, oder warum ist das so?

MfG
echsel
Zum Seitenanfang    
 
Jacke

Gepostet:
30.01.2005 18:58

   
die variablen sind nur platzhalter...ich kann die nennen woe ich lust hab...habs aber jetzt so rum getauscht wie bei den anderen funktionen...so ich hab mich jetzt mit meinen tutor aus der uni verständigt und der hat mir jetzt gesagt wie ich das mit den schlüßelwörtern machen lkann...ich definiere sie einfach als konstante...ich prog das mal eben...
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=[(author,a)|((author,a),(titel,t),(publisher,p),(year,y),(price,pr))<-eList]

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



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):[]

der fehler kam dadurch das die einrückung nicht stimmte...so ists richtig...ich schreib deine aufgabe jetzt mit den konstanten...
Zum Seitenanfang    
 
Jacke

Gepostet:
30.01.2005 19:23

   
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)]

author ="Autor"
titel = "Titel"
publisher="Verlag"
year="Jahr"
price="Preis"

--erzeugt eine Liste von buechern
--aufruf mit -->exampleList
--man macht zunächst einen eintrag in eine leere Liste und dann nen eintrag in einen liste mit einen element usw
--eben alles verschachtelt
exampleList::Booklist
exampleList=new_entry(new_entry(new_entry (new_entry (new_entry [] book) book2) book3)book4)book5

--die buecher, war zwar nicht verlangt aber damit kann man sehr gut show_book testen
--ausserdem ist es einfacher die buecherliste zu erzeugen
--ist doch gleich viel übersichtlicher so oder?
--aufruf mit -->book
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 fuer Dummies"),(publisher,"MitP"),(year,1998),(price,99.99))

book3::(Author,Titel,Publisher,Year,Price)
book3=((author,[("Autor a"),("Autor b")]),(titel,"Haskellchen"),(publisher,"Markt und Technik"),(year,1885),(price,49.95))

book4::(Author,Titel,Publisher,Year,Price)
book4=((author,[("Klaus Taler"),("Mobby"),("Hannes")]),(titel,"Haskell 2.0"),(publisher,"Bayer"),(year,1995),(price,35.95))

book5::(Author,Titel,Publisher,Year,Price)
book5=((author,[("Charly")]),(titel,"functional Programming"),(publisher,"ABC Verlag"),(year,1990),(price,9.99))

--new_entry erweitert eine bücherliste um einen eintrag
--list ist die eingegebene Liste
--aufruf mit-->new_entry exampleList ((author,"ein Autor"),(titel,"ein Titel"),(publisher,"ein Verlag"),(year,"Erscheinungsjahr"),(price,"der Preis"))
--man kann es auch so aufrufen new_entry [] book

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

--sucht einen Titel in einer bücherliste
--benutzt die Funktion sub_str
--Aufruf mit searchTitel exampleList "Haskell"
searchTitel::Booklist->String->[String]
searchTitel eList s=[(t)|((author,a),(titel,t),(publisher,pub),(year,y),(price,pr))<-eList,substr s t]

--kuckt ob ein string teil eines anderen string ist
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

--gibt die Liste aller autoren in einer Bücherliste zurück
allAuthors :: Booklist->[Author]
allAuthors eList=[(author,a)|((author,a),(titel,t),(publisher,p),(year,y),(price,pr))<-eList]

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

--eine hilffunktion um eine Liste von Strings auszugeben
show_s::[(String)]->IO()
show_s x = sequence_(map putStrLn (x))

--zeigt ein Buch
--aufruf mit -->show_book book2
--show_book benutzt auch noch die show-funktion von haskell,damit werden der preis
--und das Jahr in Strings umgewandelt und dann zu einer Liste von Strings (x) zugefügt
--diese wird dann mit show_s ausgegeben
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:t:pub:( show y):(show pr):[]



so das wars FERTIG!!!!!!!!! juhu!!!Smilie

nur noch ne kleine detailfrage...bei num_list geb ich die nummerierte liste der Titel der bücher in der Liste zurrück...ist das richtig so?

gruß jacke...
Zum Seitenanfang    
 
echsel

Gepostet:
31.01.2005 17:17

   
hallo,

ich denke dass mi der Lste wird klappen. Ich habe aber immer noch 2 Fragen:
1)schon wenn ich Text Editior schliesse, bekomme ich ein Fehler

Type error in application
*** Expression : a : t : pub : show y : show pr : []
*** Term : a
*** Type : [[Char]]
*** Does not match : [Char]

habe mit show_s versucht, habe ich bekommen :

show_book ((author,a),(titel,t),(publisher,pub),(year,y),(price,pr))=show_s x
where x=a:t:pub:( show_s y):(show_s pr):[]

mit Fehlermeldung

Type error in application
*** Expression : show_s pr
*** Term : pr
*** Type : Float
*** Does not match : [String]

2) Die zweite frage habe ich noch zu frühere Version (ersten an der Seite :) ) Ich kann die new_entry Funktion nicht anwenden.
new_entry exampleList ((author,"ein Autor"),(titel,"ein Titel"),(publisher,"ein Verlag"),(year,"Erscheinungsjahr"),(price,"der Preis")) geht nicht

ERROR - Undefined variable "price"

wenn ich die Schlüsselwörter author, titel ... weglasse bekomme ich solchen Meldung

ERROR - Type error in application
*** Expression : new_entry exampleList ("ein Autor","ein Titel","ein Verlag","Erscheinungsjahr","de
r Preis")
*** Term : ("ein Autor","ein Titel","ein Verlag","Erscheinungsjahr","der Preis")
*** Type : ([Char],[Char],[Char],[Char],[Char])
*** Does not match : (Author,Titel,Publisher,Year,Price)

die beide Versionen unterscheiden sich. absichtlich? :)
new_entry list ((author,a),(titel,t),(publisher,pub),(year,y),(price,pr)) =[(("author",a),("titel",t),("publisher",pub),("year",y),("price",pr))]++list
new_entry list ((author,a),(titel,t),(publisher,pub),(year,y),(price,pr)) =[((author,a),(titel,t),(publisher,pub),(year,y),(price,pr))]++list

MfG
echsel

Zum Seitenanfang    
 
Jacke

Gepostet:
31.01.2005 17:32

   
also die fehler sind durch die verkerten einrückungen entstanden...ich lad dir einfach mal die haskell datei hoch...
du kannst <a href="http://www.jammni.de/download/haskell/echsel1.hs" class="textlink">hier runterladen...
die kommentare sind aber nur hier im forum...

so und nun zu deinen fragen:
zur ersten frage...das hab ich nochmal geändert siehe die datei...
zu 2tens ja also bei der früheren version konnte man new_entry nur so aufrufen:
man mußte immer String-Tupels eingeben

new_entry examplList (("author","ein Autor"),("titel","ein Titel"),("publisher","ein Verlag"),("year","Erscheinungsjahr"),("price","der Preis"))



jetzt mit den konstanten geht beides:
so ists aber schöner
author ist ne Konstante die den String Autor enthält...
author="Autor"
new_entry exampleList ((author,"ein Autor"),(titel,"ein Titel"),(publisher,"ein Verlag"),(year,"Erscheinungsjahr"),(price,"der Preis"))



achso und das mit dem show_s kannst du nicht machen weil du wendest ja die funktion show_s pr
auf nen float an...und die funktion show_s ist nur für ne Liste von Strings definiert...
die allgemeine show funktion kann floats und ints und eigentlich alle datentypen in Strings umwandeln...

gruß jacke
Zum Seitenanfang    
 
echsel

Gepostet:
31.01.2005 21:17

   
ich kann nicht die Datei runterladen, aber das ist nicht mehr nötig. Gehts schon. Nur weiss ich immer noch nicht wie soll ich new_entry aufrufen. wenn ein String-Tupel ("author","ein Author") ist, dann so geht nichts.

MfG
echsel
Zum Seitenanfang    
 
echsel

Gepostet:
31.01.2005 21:34

   
Ok, ich habe das. jetzt sende ich das Ganze und warte auf Antwort.

MfG
echsel
Zum Seitenanfang    
 
Jacke

Gepostet:
31.01.2005 22:16

   
also new_entry wird mit :
new_entry example_List book3

aufgerufen
oder mit

new_entry exampleList ((author,"ein Autor"),(titel,"ein Titel"),(publisher,"ein Verlag"),(year,"Erscheinungsjahr"),(price,"der Preis"))

new_entry [] ((author,"ein Autor"),(titel,"ein Titel"),(publisher,"ein Verlag"),(year,"Erscheinungsjahr"),(price,"der Preis"))

aber dafür hab ich ja die bücher geschrieben

also new_entry [] book3 ist doch schön oder...

na das mit dem code einfügen funzt ja noch nicht so ganz...:/
das muß der jammni aber noch ändern

gruß schaky
Zum Seitenanfang    
 
Jacke

Gepostet:
10.07.2005 14:37

   
bitte gebt den quelltext nich so ab wie das hier steht ein wenig eigenleistung müßt ihr nämlich schon erbringen...;)
aber ein paar tipps was noch geändert werden muß geb ich euch:

Der Datentyp der Funktion new_entry ist falsch!
Laut Aufgabenstellung heißt es:
b) ... Die Schlüsselwörter autor, titel, usw. sind als Argumente nicht zugelassen!
Im zweiten Argument meiner Definition kommen aber genau diese Schlüsselwörter vor.
Das 2. Argument müßte aber z.B. so aussehen:
("Dan Gookin","Haskell für Dummies","MitP",1998,99.99)

bei allauthors muß das schlüßelwort auch raus:
showbook muß nen String zurrück geben...und nicht ein IO() objekt
und denk dir andere Beispiele aus...die bücer gibts nämlich nich

gruß jacke
Zum Seitenanfang    
 

vorherige Seite 1 2 3 4 5 6