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.12.2004 15:33

   
Hi Jacke!

Ich versuche die letzte Funktion show_Book zu machen.Die wird ähnlich wie searchTitel. Die Funktion searchTitel habe ich so geändert, dass die zeigt jetez nur Titels und nicht ganze Information über Buch. Das soll show_Book machen. Aber wenn ich versuche bei show_Book substr zu definieren, bekomme ich ein Fehler
"substr" multiply defined
Wenn verlasse ich diese definition, dann
Type error in application
*** Expression : substr z eList
*** Term : eList
*** Type : [([Char],[Char],[Char],[Char],[Char])]
*** Does not match : [Char]

Außerdem, steht in Aufgabestellung, dass als Argument ein Element aus der Bücherliste erwartet wird und bei mir muss ich noch die Name einer Bücherliste angeben. Dazu muss ich noch die Informationen mit carriage return trennen (/r) und soweit ich gelesen habe, es funktioniert innerhalb einer Liste nicht, sonst bei Strings. Was ratest du?

type Author=String
type Titel=String
type Publisher=String
type Year=String
type Price=String
type Booklist=[(Author,Titel,Publisher,Year,Price)]

exampleList::Booklist
exampleList=[("Simon Thomson","The craft of functional Programming","Addison-Wesley","1999","39,90e"),("Dan Gookin","Haskell für Dummies","MitP","1998","99,99e")]

new_entry::Booklist->Author->Titel->Publisher->Year->Price->Booklist
new_entry exampleList a t pub y pr =[(a,t,pub,y,pr)]++exampleList

searchTitel::Booklist->Titel->[Titel]
searchTitel eList t=[(titel)|(author,titel,publisher,year,price)<-eList,substr t titel]
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)|(author,titel,publisher,year,price)<-eList]

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

show_Book::Booklist->String->Booklist
show_Book eList z=[(author,titel,publisher,year,price)|(author,titel,publisher,year,price)<-eList,substr z eList]

MfG
echsel
Zum Seitenanfang    
 
Jacke

Gepostet:
21.12.2004 16:56

   
gute frage was ist mit ein argument aus der bücherliste gemeint? der titel? die preise? ich würd ja sagen der titel eines buches oder versteh ich das falsch
/r kann man mit map einbinden das ist nicht so schwer...aber erst mal die aufgabe verstehen...darüber muß ich erstmal ne runde nachdenken...ich pro das bis heute abend mal wahrscheinlich mit titel und der examplelist als argument...
substr kann man nicht so auf ne liste anwenden...da muß ich erstmal selber kucken wo der fehler herkommt

gruß jacke

ps:bisher schlägst du dich doch ganz gut...
Zum Seitenanfang    
 
Jacke

Gepostet:
22.12.2004 10:57

   
so ich denke jetzt hab ich die aufgabe verstanden...also fang ich dann gleich mal an mit programmieren...
man soll nen element von typ booklist reingeben...also als eingabe typ
show_book:: (Author,Titel,Pub...)->String
naja jedenfalls ist das garnicht mal so einfach da muß man noch was mt instance of machen weil sonst gibt man ja nicht die variablen zurück sondern nur den namen...ich werd das wohl heute nicht mehr fertig kriegen weil ich bald zu meinen eltern fahre(weihnachten und so)...bin am 28ten wieder da und mach mir bis dahin nen kopf...
also erstmal frohe feiertage...

gruß jacke
Zum Seitenanfang    
 
Jacke

Gepostet:
03.01.2005 11:28

   
also ich hab nochmal jemanden gefragt die ausgabe macht man mit putstr

und dann einfach in dem string /n schreiben...und dann macht er nen zeilenumbruch...

gruß jacke
Zum Seitenanfang    
 
echsel

Gepostet:
16.01.2005 16:59

   
Hallo

zuerst Alles Gute im neuen Jahr!

Ich bin lange Zeit zuhause geblieben. Dort habe ich leider keinen Internetanschluss. Erst jetzt kann ich wieder mit Haskell kämpfen :)
Ich habe versucht die Funktion onhe "instance" zu schreiben.

showBuch:: (Autoren,Titel,Verlag,Jahr,Preis)->String
showBuch = putStr (data)
data :: Liste->String
data = [(Autoren,Titel,Verlag,Jahr,Preis)|(Autoren,Titel,Verlag,Jahr,Preis)<-data]

soweit ich gelesen habe, instance nutzt man ungefähr so

instance (data) where
data = z.B. string, liste usw.

Leider alle meine Versuche liegen in roten Bereich :/

MfG
Echsel
Zum Seitenanfang    
 
Jacke

Gepostet:
17.01.2005 14:04

   
wofür brauchst du denn das instance?...
ich schreib heute abend noch was dazu

gruß jacke
Zum Seitenanfang    
 
echsel

Gepostet:
17.01.2005 21:09

   
Hey Jacke, du has selbst geschrieben, dass ich das instance brauche, sonst kriege ich die Variablen nicht zurück :)

MfG
echsel
Zum Seitenanfang    
 
Jacke

Gepostet:
17.01.2005 21:10

   
module Main where
main = putStr "Hallo welt\nich bin jacke"


aufruf mit main

das dürfte dir weiterhelfen...

gruß jacke
Zum Seitenanfang    
 
echsel

Gepostet:
17.01.2005 22:35

   
Ich weiss, es klingt dumm, aber Haskell nimmt "module" überhaupt nichts :/ ich bekomme immer fehlermeldung: unexpected keyword "module" :( Ich habe im Internet einpaar Beispiele gefunden, wo man "modeule ... where" ausnutzt, aber irgendwie bei mir will es nicht funktionieren.
Außerdem wenn ich putStr nutze, zwischen Klammern steht das Text, der ausgegeben wird. Aber ich kann nicht einfach den Text eingeben. Wie kann ich der Text mit eine Liste verketten?

gruß echsel
Zum Seitenanfang    
 
Jacke

Gepostet:
18.01.2005 17:57

   
also ich hab dir jetzt show_book geschrieben...das wort module ist ein schlüßelwort und muß a anfang der datei stehen...
so also hier show_book

show_book::(Author,Titel,Publisher,Year,Price)-> IO()
show_book (author,titel,publisher,year,price)= putStr(author++"\n"++titel++"\n"++publisher++"\n"++ year++"\n"++ price)


aufruf mit show_book ("a","b","c","d","e")

gruß jacke...
ps :war ja garnich so schwer...;)
Zum Seitenanfang    
 

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