X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=blobdiff_plain;f=extra%2Fmonads%2Fmonads.factor;h=851e1ff0445cabb5e6eedee898750584ab3b5c4d;hp=d8d4e35a3542faab52d78dc22f3b99c080851bdd;hb=HEAD;hpb=42ae9ac0155d204be23446ac09efca7b35721bcc diff --git a/extra/monads/monads.factor b/extra/monads/monads.factor index d8d4e35a35..b42d5c6fed 100644 --- a/extra/monads/monads.factor +++ b/extra/monads/monads.factor @@ -1,14 +1,12 @@ ! Copyright (C) 2008 Slava Pestov -! See http://factorcode.org/license.txt for BSD license. -USING: arrays kernel sequences sequences.deep splitting -accessors fry locals combinators namespaces lists lists.lazy -shuffle ; +! See https://factorcode.org/license.txt for BSD license. +USING: accessors arrays kernel lists lists.lazy sequences ; IN: monads ! Functors -GENERIC# fmap 1 ( functor quot -- functor' ) -GENERIC# <$ 1 ( functor quot -- functor' ) -GENERIC# $> 1 ( functor quot -- functor' ) +GENERIC#: fmap 1 ( functor quot -- functor' ) +GENERIC#: <$ 1 ( functor quot -- functor' ) +GENERIC#: $> 1 ( functor quot -- functor' ) ! Monads @@ -188,7 +186,7 @@ M: writer-monad fail "Fail" throw ; : run-writer ( writer -- value log ) [ value>> ] [ log>> ] bi ; -M: writer >>= '[ [ _ run-writer ] dip '[ @ run-writer ] dip append ] ; +M: writer >>= '[ [ _ run-writer ] dip '[ @ run-writer ] dip prepend ] ; : pass ( writer -- writer' ) run-writer [ first2 ] dip swap call( x -- y ) ; : listen ( writer -- writer' ) run-writer [ 2array ] keep ;