[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