[Haskell-cafe] Trouble defining `instance Arrow SF'

Silvio Frischknecht silvio.frischi at gmail.com
Thu Oct 27 16:04:06 CEST 2011


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> SF.hs:11:10: `>>>' is not a (visible) method of class `Arrow' 
> Failed, modules loaded: none.

In the base package Arrows are defined a bit different from what you
some times see in the literature. I also stumbled over this once. The
(>>>) operator is just a synonym for (.) from Control.Category. Note
that (.) is not the same (.) as in Prelude.

class Category cat where
  Control.Category.id :: cat a a
  (Control.Category..) :: cat b c -> cat a b -> cat a c

class Category a => Arrow a where
  arr :: (b -> c) -> a b c
  first :: a b c -> a (b, d) (c, d)

f >>> g = g . f

your implementation would probably look something like this.

module Main where

import Control.Arrow
import Control.Category as Cat

newtype SF a b = SF {runSF :: [a] -> [b]}

instance Category SF where
    id = SF Cat.id
    SF f . SF g = SF (f Cat.. g)

instance Arrow SF where
    arr f = SF (map f)
    first (SF f) = SF (unzip >>> first f >>> uncurry zip)

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBAgAGBQJOqWTQAAoJEDLsP+zrbatWcmgP/j5DXHq5lEUKM2CHkfLuoVeQ
wJkRjsH9lRKVS/LHsfYlXEEodjpSKZwN3lL4vAQhoTwAiGys/wkd13NvXUQdV7YL
lZjlVSAyMk+q+VNdSFmaQMiIsIZ5pl31xtrAIWaqQ9+dypTOsqxEqhaf3CxqARjR
qOrJiXmeQHpSSCoQVAN6oUSEAHqyHmxOWs7cKebxFmJM96+8jTiF2SpUyJVvlqMX
jgfGlnTS5h3DMFx3GStUaZezk/JaFRJmxtRdTzFj4HpL3COOjrQBmGt4X8v4OzWX
4+hFLcaLxjr3Kgnn3LEs7QM8SwzPeZechdPFBor8SxymXrJNmD0GpBBRdMqGXREI
m7sC32H3wzpbuHQXIM32Is3wjehrAOn2h1cHsImGxC6qglIvIFm4BwIZ5UYPoiaK
oFIEN7HsfyLPXZumMKxGd3Al8PrxXyMJZFQMfcdzI5IuPCWQGJCo6Bin+k9d5CuU
fxM1SDoFx4LzphjLuTLJeD1biVKs0Wj/DaSDDcaVxhITB4inJDOMyzT3PelXipkS
xveMS4G0xQNRo21SY4QpHwZhCTnKftapovmJeOH4jA2i5D4UeXdvMIAHJbp1vFqQ
CZ2aA1p2Ji4RxdMOrNbGPpR8sz6A9E16PQoN7XGV3xaHcJ6Ge0kKd2EYaT4pLNxH
vvLMLop0dVJuhL6h/cLj
=luI1
-----END PGP SIGNATURE-----



More information about the Haskell-Cafe mailing list