<div dir="ltr">Hi John, amazingly I hadn't ran into this package. It seems that we take very different approaches to functors. I borrowed the 'data-category' approach of named functors, while hask uses the standard approach of implicit functors. Without explicit functors, there are many functors that we cannot express, such as the product functor or the diagonal functor. I will have to look at hask in more depth, however, I am sure there are many ideas I could borrow.<br><br>Ian<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>