codo-notation: A notation for comonads, analogous to the do-notation for monads.
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.
Downloads
- codo-notation-0.5.2.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
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 | 2478 total (4 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] |