-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | A notation for comonads, analogous to the do-notation for monads.
--   
--   A notation for comonads, analogous to the do-notation for monads.
--   
--   Requires the <tt>TemplateHaskell</tt> and <tt>QuasiQuotes</tt>
--   extensions.
--   
--   Example 1:
--   
--   <pre>
--   {-# LANGUAGE TemplateHaskell #-}
--   {-# LANGUAGE QuasiQuotes #-}
--   
--   import Control.Comonad
--   import Language.Haskell.Codo
--   
--   foo :: (Comonad c, Num a) =&gt; c a -&gt; a
--   foo = [codo| x =&gt; extract x + 1 |]
--   </pre>
--   
--   Example 2:
--   
--   <pre>
--   import Data.Monoid
--   instance Monoid Double where
--          mempty = 0.0
--          mappend = (+)
--   
--   differentiate f = ((f 0.001) - f 0) / 0.001
--   
--   minima :: (Double -&gt; Double) -&gt; Bool
--   minima = [codo| f =&gt; f'  &lt;- differentiate f
--                        f'' &lt;- differentiate f'
--                        (extract f' &lt; 0.001) &amp;&amp; (extract f'' &gt; 0) |]
--   </pre>
--   
--   Further explanation of the syntax can be found in the following
--   (short) paper:
--   <a>http://www.cl.cam.ac.uk/~dao29/drafts/codo-notation-orchard-ifl12.pdf</a>
--   with a numer of examples.
--   
--   Further examples can be found here:
--   <a>https://github.com/dorchard/codo-notation</a>.
@package codo-notation
@version 0.5.2

module Language.Haskell.Codo
codo :: QuasiQuoter
