www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

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

Logo - DracheHaskell-Forum

KO123

Gepostet:
15.06.2008 20:05

Datentypen Haskell  
Hallo,
ich komme nicht klar mit einer Aufgabe, und zwar:a) ich soll einen Datentyp definieren, um Fußballpartien darstellen zu können
Datentyp soll solche Attribute haben : Name der Heimmannschaft String, Name der Gastmannschaft String und Ergebnis als Paar von Ganzzahlen

ich habe mir folgendes gedacht:
data Match = NameHeimatmannschaft String | NameGastmannschaft String | Ergebniss (Integer,Integer) deriving (Show)

b) definieren sie eine Funktion unentschieden, die für eine liste von Fußballpartien vom Typ [Match] alle Partien liefert, die unentschieden ausgegangen sind:
ich hab geschrieben :
unent :: String -> [Match]
unent x = [(a,b) | (a,b)<-x, a==b]

Aber es funktioniert nicht und ich weiß nicht wo der Fehler ist.
Kann mir Bitte jemand helfen?

Zum Seitenanfang    
 
Siracusa

Gepostet:
15.06.2008 22:39

   
Hallo KO123,

zu a) Eine Partie soll ja immer alle drei Informationen beinhalten. So wie du den Datentyp jetzt definiert hast (mit 3 Konstruktoren), kann ein Wert vom Typ Match nur jeweils eine Information speichern, also entweder einen der Mannschaftsnamen oder das Ergebnis. Du solltest also nur einen Konstruktor erstellen, der drei Informationen speichert, z.B. data Match = Match String String (Int,Int).

zu b) Der Typ deiner Funktion ist schonmal falsch. Die Funktion unent soll eine Liste von Spielen als Eingabe bekommen, sortiert dann einige aus und liefert als Ergebnis wieder eine Liste von Spielen.

Die Funktionsdefinition ist schon fast richtig. Die Liste x liefert als Elemente aber nicht Paare (a,b), sondern Elemente vom Typ Match. Du müßtest als Musteranpassung also etwas wie (Match heim gast (a,b))<-x verwenden.


Viele Grüße,

Siracusa
Zum Seitenanfang    
 
KO123

Gepostet:
15.06.2008 23:48

   
Danke dir Siracusa!!! Du bist der beste!!!:-)

Mit deinen Tipps habe ich die Aufgabe ganz schnell gelöst.

Ich werde mich öffter melden:-)

Viele Grüsse

KO123
Zum Seitenanfang