<NME> test_monad.py
<BEF> import unittest

from oslash import Writer, MonadWriter
from oslash.abc.monad import compose


class TestMonadMonadic(unittest.TestCase):
    def test_monad_monadic_compose(self):
        unit, tell = StringWriter.unit, MonadWriter.tell

        def half(x):
            return tell("I just halved %s!" % x).bind(lambda _: unit(x//2))

        quarter = compose(half, half)
        value, log = quarter(8).run()

        self.assertEqual(2, value)
        self.assertEqual("I just halved 8!I just halved 4!", log)

<MSG> Moved monadic functions to monadic.py

<DFF> @@ -1,7 +1,8 @@
 import unittest
 
-from oslash import Writer, MonadWriter
-from oslash.abc.monad import compose
+from oslash import Monad, Writer, MonadWriter
+
+compose = Monad.compose
 
 
 class TestMonadMonadic(unittest.TestCase):

Moved monadic functions to monadic.py