dnes to bylo zase zabavne. Pouze ten Vas zpusob vypoctu e me ponekud boli a privadi na otazku, za-li Closure umi i neco jako pevne body v lambda kalkulu. Bylo by mozne napsat toto?
(def f (for [x (cons (cons 1 1) f)] (cons (* x y) (+ y 1)) ))
(apply + (take 1000 (for [x f] (/ 1 (car x))))
Jde mi o to jestli je mozne predpocitat posloupnost faktorialu f tak ze pro novy prvek vyuziju jsi vypoctene prvky f.
Pokud si dobre pamatuji tak v Haskellu neco takoveho jde.
Jde mi o to jestli je mozne predpocitat posloupnost faktorialu f tak ze pro novy prvek vyuziju jsi vypoctene prvky f. Pokud si dobre pamatuji tak v Haskellu neco takoveho jde.
V Haskellu lze použít funkci scanl
a psát scanl (*) 1 [1..]
. Výpočet posloupnosti aproximací pak vypadá takto:
scanl (+) 0 $ map ((1/) . fromIntegral) $ scanl (*) 1 [1..]
Hmm mozna to ani neni zapotrebi resit pres cons apod. ale vytvorit si lepsi generator sekvence, ktery si bude pamatovat predchozi vysledek, takze v kazde iteraci provede jen jedno nasobeni. AFAIK muze byt sekvence takto udelana, i kdyz je samozrejme na kazdem vyvojari, jak se popere s imutabilitou :-)))