Ich versuche primitive Rekursion in Begriff foldr
zu definieren, wie in A tutorial on the universality and expressiveness on fold Kapitel 4.1 erläutert.Strenge des Mustervergleichs vs. Dekonstruieren
ist hier erste Versuch es
simpleRecursive f v xs = fst $ foldr g (v,[]) xs
where
g x (acc, xs) = (f x xs acc,x:xs)
jedoch obige Definition halt nicht für head $ simpleRecursive (\x xs acc -> x:xs) [] [1..]
Below Definition ist die
simpleRecursive f v xs = fst $ foldr g (v,[]) xs
where
g x r = let (acc,xs) = r
in (f x xs acc,x:xs)
Bei fast ähnliche Definition aber anderes Ergebnis zu stoppen, Warum unterscheidet es sich? Hat es damit zu tun, wie Haskell Muster übereinstimmen?
Wahrscheinlich zu einem Scoping-Problem im Zusammenhang mit 'xs', da es auf die Definition von' bewegen g' das Problem behebt. – chepner