<div dir="ltr">I've now borrowed the approach of hask: an installation of an arrow is proof that its domain and codomain are objects. This is a great simplification.<br><br>On Tuesday, August 19, 2014 2:40:21 AM UTC-7, John Wiegley wrote:<blockquote class="gmail_quote" style="margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">>>>>> Ian Milligan <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="k-XsepOroCMJ" onmousedown="this.href='javascript:';return true;" onclick="this.href='javascript:';return true;">ianm...@gmail.com</a>> writes:
<br>
<br>> extended-categories <<a href="http://github.com/ian-mi/extended-categories" target="_blank" onmousedown="this.href='http://www.google.com/url?q\75http%3A%2F%2Fgithub.com%2Fian-mi%2Fextended-categories\46sa\75D\46sntz\0751\46usg\75AFQjCNEOm3r-Geh5YSXSLH3zj4t14X3N6g';return true;" onclick="this.href='http://www.google.com/url?q\75http%3A%2F%2Fgithub.com%2Fian-mi%2Fextended-categories\46sa\75D\46sntz\0751\46usg\75AFQjCNEOm3r-Geh5YSXSLH3zj4t14X3N6g';return true;">github.com/ian-mi/extended-<wbr>categories</a>> is an
<br>> implementation of categories designed to make use of GHC's recently enriched
<br>> kind system. This project is a work in progress (only a few basic constructs
<br>> are implemented), but your comments are welcomed. extended-categories
<br>> requires a recent version of GHC (I have only tested it with 7.8.3).
<br>
<br>> Categories are poly-kinded and have an Object constraint family:
<br>
<br>> class Category m where
<br>>     type Object (m :: k -> k -> *) (a :: k) :: Constraint
<br>>     id :: Object m a => m a a
<br>>     (.) :: (Object m a, Object m b, Object m c) => m b c -> m a b -> m a c
<br>
<br>Hi Ian,
<br>
<br>You should definitely also take a look at Edward Kmett's hask library:
<br>
<br>    <a href="https://github.com/ekmett/hask" target="_blank" onmousedown="this.href='https://www.google.com/url?q\75https%3A%2F%2Fgithub.com%2Fekmett%2Fhask\46sa\75D\46sntz\0751\46usg\75AFQjCNHxmpwRfJtnB546hrh9hHf__MFmeQ';return true;" onclick="this.href='https://www.google.com/url?q\75https%3A%2F%2Fgithub.com%2Fekmett%2Fhask\46sa\75D\46sntz\0751\46usg\75AFQjCNHxmpwRfJtnB546hrh9hHf__MFmeQ';return true;">https://github.com/ekmett/hask</a>
<br>
<br>He has taken the idea of poly-kinded Category and run with it in that library.
<br>To compare, he has:
<br>
<br>    class Category' (p :: i -> i -> *) where
<br>      type Ob p :: i -> Constraint
<br>      id :: Ob p a => p a a
<br>      observe :: p a b -> Dict (Ob p a, Ob p b)
<br>      (.) :: p b c -> p a b -> p a c
<br>
<br>John
<br>______________________________<wbr>_________________
<br>Haskell-Cafe mailing list
<br><a href="javascript:" target="_blank" gdf-obfuscated-mailto="k-XsepOroCMJ" onmousedown="this.href='javascript:';return true;" onclick="this.href='javascript:';return true;">Haskel...@haskell.org</a>
<br><a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank" onmousedown="this.href='http://www.google.com/url?q\75http%3A%2F%2Fwww.haskell.org%2Fmailman%2Flistinfo%2Fhaskell-cafe\46sa\75D\46sntz\0751\46usg\75AFQjCNHiVycCM53czUVzPma4Fkb_wPqP2A';return true;" onclick="this.href='http://www.google.com/url?q\75http%3A%2F%2Fwww.haskell.org%2Fmailman%2Flistinfo%2Fhaskell-cafe\46sa\75D\46sntz\0751\46usg\75AFQjCNHiVycCM53czUVzPma4Fkb_wPqP2A';return true;">http://www.haskell.org/<wbr>mailman/listinfo/haskell-cafe</a>
<br></blockquote></div>