www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

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

Logo - DracheHaskell-Forum

paco89

Gepostet:
25.02.2012 20:30

Ausdrücke auswerten bei haskell  
hallo, hab folgenden code in einer Aufgabe:



h :: [(Int,a)] -> Int -> [a]

h xs 0 = []

h xs n = c:h xs m where (m,c) = get xs n



Bestimmen Sie das Ergebnis der Auswertung für den ausdruck:

h [(1,´y´), (4,´h´),(2,´r´),(0,´i´)] 2



ich kann damit nicht viel anfangen. ich weiß nur, dass am ende eine liste rauskommen muss. und ich kenne das \":\"- zeichen. das bedeutet, dass etwas in eine liste eingefügt werden soll. Außerdem kenne ich das wort \"where\". das zeigt eine lokale definition.


über eine antwort würde ich mich freuen.....;)


Zum Seitenanfang    
 
IKT

Gepostet:
25.02.2012 22:48

   
Die Definition von get fehlt, oder? Aber an für sich braucht man die auch nicht um zu erahnen was da getan wird:

xs matchst du gegen [(Int,a)]. mit get xs n holst du dir anscheinend irgendetwas aus der liste (das n-te Element?), das siehst du daran, dass da (m,c) = get xs n steht. Es würde passen, dass m :: Int und c :: a, denn links von dem where steht ja c:h xs m, d.h. c wird am Ende in der Liste stehen (die ja vom Typ [a] ist) und h muss mit einem Int als 2. Parameter aufgerufen werden.

Zum Seitenanfang    
 
paco89

Gepostet:
26.02.2012 10:27

   
ja, die defintion von get gibt´s nicht. ähm....ja in der musterlösung steht als lösung : hi oder [´h´, ´i´] .
ich dachte mir, dass sie aus jedem 2. tupel jeweils das 2. element rauspicken. aber an dem code hätte ich nie und nimmer ablesen können, dass es so ist.
Zum Seitenanfang