Why does this only work after running the evaluation 2 times?
diff[var1_, y0_, funk_, {var2_, a_, b_}, N_] := (
Module[{h},
var1 := #1;
var2 := #2;
h = (b - a)/N;
FoldList[var1 + h*funk &, y0, Range[a, b - h, h]] ])
Evaluation the first time
diff[y, 2, -t y^2, {t, 0., 2}, 20]
{2, #1 - 0.1 #1^2 #2, #1 - 0.1 #1^2 #2, #1 - 0.1 #1^2 #2, #1 - 0.1 #1^2 #2, #1 - 0.1 #1^2 #2, #1 - 0.1 #1^2 #2, #1 - 0.1 #1^2 #2, #1 - 0.1 #1^2 #2, #1 - 0.1 #1^2 #2, #1 - 0.1 #1^2 #2, #1 - 0.1 #1^2 #2, #1 - 0.1 #1^2 #2, #1 - 0.1 #1^2 #2, #1 - 0.1 #1^2 #2, #1 - 0.1 #1^2 #2, #1 - 0.1 #1^2 #2, #1 - 0.1 #1^2 #2, #1 - 0.1 #1^2 #2, #1 - 0.1 #1^2 #2, #1 - 0.1 #1^2 #2}
Evaluation the second time
diff[y, 2, -t y^2, {t, 0., 2}, 20]
{2, 2., 1.96, 1.88317, 1.77678, 1.6505, 1.51429, 1.37671, 1.24404, 1.12023, 1.00728, 0.905822, 0.815565, 0.735748, 0.665376, 0.603394, 0.548781, 0.500596, 0.457994, 0.420238, 0.386684}