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

[ bsd3, language, library ] [ Propose Tags ]

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
                     f'' <- differentiate f'
                     (extract f' < 0.001) && (extract f'' > 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.

Modules

[Index]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.5, 0.5.2
Dependencies base (>=4.2 && <5), comonad (>=3), haskell-src-meta (>=0.5.1), parsec (>=3), template-haskell (>=2.7), uniplate (>=1.6) [details]
License BSD-3-Clause
Author Dominic Orchard <dom.orchard@gmail.com>
Maintainer Dominic Orchard <dom.orchard@gmail.com>
Category Language
Source repo head: git clone git://github.com/dorchard/codo-notation.git
Uploaded by DominicOrchard at 2012-11-22T20:04:19Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 2363 total (8 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]