ghc-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: '&#x7b;-# LANGUAGE TemplateHaskell #-&#x7d;&#x7b;-# 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&#x20;&#x20;&#x20; mempty = 0.0&#x20;&#x20;&#x20; 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>.

BSD-3-Clause

cloud_download Downloads

Please select a product to see the available package versions:
Loading...
Loading package downloads...