Showing posts with label Bifunctor. Show all posts
Showing posts with label Bifunctor. Show all posts

Wednesday, February 10, 2010

Neume

Copperbox revision 1131.

I've added the ABC code from Mullein, though quite a lot is stubbed out at the moment. I've also added bifunctor and ternary (?) functor classes to help manipulate notes (parameteric on annotation, pitch and duration).



class FMap2 f where
fmap2 :: (a -> u) -> (b -> v) -> f a b -> f u v

class FMap3 f where
fmap3 :: (a -> u) -> (b -> v) -> (c -> w) -> f a b c -> f u v w


fmap2a :: FMap2 f => (a -> u) -> f a b -> f u b
fmap2a f = fmap2 f id

fmap3a :: FMap3 f => (a -> u) -> f a b c -> f u b c
fmap3a f = fmap3 f id id

fmap3b :: FMap3 f => (b -> v) -> f a b c -> f a v c
fmap3b g = fmap3 id g id

Blog Archive

About Me

My photo
Disambiguating biog as there are a few Stephen Tetley's in the world. I'm neither a cage fighter or yachtsman. I studied Fine Art in the nineties (foundation Bradford 1992, degree Cheltenham 1992 - 95) then Computing part-time at Leeds Met graduating in 2003. I'm the Stephen Tetley on Haskell Cafe and Stackoverflow.