Package Info

ghc-codo-notation


A notation for comonads, analogous to the do-notation for monads


Development/Libraries/Haskell

A notation for comonads, analogous to the do-notation for monads.

Requires the 'TemplateHaskell' and 'QuasiQuotes' extensions.

Example 1:

' {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE QuasiQuotes

import Control.Comonad import Language.Haskell.Codo

foo :: (Comonad c, Num a) => c a -> a foo = [codo| x => extract x + 1 |] '

Example 2:

' import Data.Monoid instance Monoid Double where     mempty = 0.0     mappend = (+)

differentiate f = ((f 0.001) - f 0) / 0.001

minima :: (Double -> Double) -> Bool minima = [codo| f => f' <- differentiate f &#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20; f'' <- differentiate f' &#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20;&#x20; (extract f' &#60; 0.001) && (extract f'' &#62; 0) |] '

Further explanation of the syntax can be found in the following (short) paper: <http://www.cl.cam.ac.uk/~dao29/drafts/codo-notation-orchard-ifl12.pdf> with a numer of examples.

Further examples can be found here: <https://github.com/dorchard/codo-notation>.


License: BSD-3-Clause
URL: https://hackage.haskell.org/package/codo-notation

Categories

Releases

Package Version Update ID Released Package Hub Version Platforms Subpackages
0.5.2-bp150.2.5 info GA Release 2018-07-31 15
  • ppc64le
  • ghc-codo-notation
  • ghc-codo-notation-devel
0.5.2-bp150.2.7 info GA Release 2018-07-30 15
  • x86-64
  • ghc-codo-notation
  • ghc-codo-notation-devel