Declaratieve Talen/Oplossing Oneindige rij: verschil tussen versies
Naar navigatie springen
Naar zoeken springen
Geprobeerd een examenvraag op te lossen |
|||
Regel 20: | Regel 20: | ||
inf r f = f r : inf ((f r):r) f | inf r f = f r : inf ((f r):r) f | ||
[[Gebruiker:Roald|Roald]] 12 jan 2010 22:37 (UTC) | [[Gebruiker:Roald|Roald]] 12 jan 2010 22:37 (UTC) | ||
====Nog een alternatief==== | |||
Dit onafhankelijk van [[Gebruiker:Roald|Roald]] opgelost. Het idee is hetzelfde, maar ik bouw de lijst in de omgekeerde richting op. | |||
infinite x f = infinite' [x] f | |||
where | |||
infinite' l f = (last l) : (infinite' (l ++ [f l]) f) | |||
[[Gebruiker:Kasper Meerts|Kasper Meerts]] 15 jul 2010 21:12 (UTC) |
Versie van 15 jul 2010 21:12
Een oplossing
infinite :: t -> ([t]->t) -> [t] infinite b f = b:(infinite2 [b] f) where infinite2 voorstuk f = let res = f voorstuk in res:(infinite2 (voorstuk ++ [res]) f)
De clou is het begin van de rij bijhouden in een parameter.
M'n inspiratie kwam uit de Fibonacci-rij op p.26
Alternatief
infinite::t->([t]->t)->[t] infinite x f = x:inf [x] f where inf r f = f r : inf ((f r):r) f
Roald 12 jan 2010 22:37 (UTC)
Nog een alternatief
Dit onafhankelijk van Roald opgelost. Het idee is hetzelfde, maar ik bouw de lijst in de omgekeerde richting op.
infinite x f = infinite' [x] f where infinite' l f = (last l) : (infinite' (l ++ [f l]) f)
Kasper Meerts 15 jul 2010 21:12 (UTC)