haskell对象的Hask类是一个本地小类的例子吗?
http://ncatlab.org/nlab/show/locally+small+category
也许不是.. hask as cpo http://www.cs.gunma-u.ac.jp/~hamana/Papers/cpo.pdf
haskellwiki,http://www.haskell.org/haskellwiki/Hask有非常好的信息,表明Hask不是Cartesian Closed.
我有一种想法可以($)像通用一样Control.Category概括(.),我已经用这篇文章末尾的代码(也是ideone)完成了.
在这段代码中,我创建了一个名为的类FunctionObject.该类具有($)以下签名的函数:
($) :: f a b -> a -> b
Run Code Online (Sandbox Code Playgroud)
当然,我创建(->)了这个类的实例,因此$继续使用普通函数.
但是这允许你创建特殊的函数,例如,知道它们自己的逆,如下面的例子所示.
我总结说有三种可能性之一:
选项1似乎不太可能,我对hayoo的搜索没有显示选项2,所以我怀疑选项3是最有可能的,但如果有人可以解释为什么那就是好的.
import Prelude hiding ((.), ($))
import Control.Category ((.), Category)
class FunctionObject f where
($) :: f a b -> a -> b
infixr 0 $
instance FunctionObject (->) where
f $ x = f x
data InvertibleFunction a b =
InvertibleFunction (a -> b) …Run Code Online (Sandbox Code Playgroud)