Simple continuation
Par pied, dimanche 31 décembre 2006 à 04:29 :: Informatique :: #63 :: rss
L'original, en scheme
(define (foo x)
(+ 1
(call/cc
(lambda (k)
(+ 2 (k x))))))
(display (foo 41))
Quelques versions en Haskell
sorear x = do
r <- callCC (\k -> do
r <- k x
return (r + 2))
return (r + 1)
runso = runCont (sorear 41) print
p x = callCC (\k->(k x) >>=(\x->return(2+x))) >>= (\x -> return (1+x))
runp = runCont (p 41) print
r x = (return.(+1))=<<(callCC$ \k->(return.(+2))=<<(k x))
runr = runCont (r 41) print
J'aime bien les monades, même si de temps à autres, ca rend le code quelque peu imbitable... :)
P!
(define (foo x)
(+ 1
(call/cc
(lambda (k)
(+ 2 (k x))))))
(display (foo 41))
Quelques versions en Haskell
sorear x = do
r <- callCC (\k -> do
r <- k x
return (r + 2))
return (r + 1)
runso = runCont (sorear 41) print
p x = callCC (\k->(k x) >>=(\x->return(2+x))) >>= (\x -> return (1+x))
runp = runCont (p 41) print
r x = (return.(+1))=<<(callCC$ \k->(return.(+2))=<<(k x))
runr = runCont (r 41) print
J'aime bien les monades, même si de temps à autres, ca rend le code quelque peu imbitable... :)
P!
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire