代理就像()

由于 Proxy 不包含运行时信息,因此你可以随时为任何 f 编写自然转换 f a -> Proxy a

proxy::f a -> Proxy a
proxy _ = Proxy

这就像任何给定的值总是可以删除到 ()

unit::a -> ()
unit _ = ()

从技术上讲,Proxy 是仿函数类别中的终端对象,就像 () 是值类别中的终端对象一样。