这必须存在,对吧?在我看来,数学空间中的点通常是为了携带额外的行李。就我而言,我想用名称和特定于域的类型标记n维空间中的每个点。 monad是表示这种额外行李的正确方法,还是参数化记录的最佳方式呢?哪些库提供了这种开箱即用的功能?
答案 0 :(得分:1)
不确定这是不是你的意思,但可能是what I've defined in the manifolds
library(目前它更像是一个实验性的实现细节,而不是一个稳定的导出类型):
data WithAny x y = WithAny y !x
WithAny x y
表现为vector space(更一般地说,作为manifold)与x
的行为方式相同,但每个值也有{{1}与它相关联,它被简单地视为“标记”,而不是通过连续空间操作来改变。 E.g。
y
对于那些实例“正交”,类型是第二个参数中的monad,带有
WithAny y x ^+^ WithAny _ ξ = WithAny y $ x ^+^ ξ
(正如danidiaz评论的那样,它特别是一个comonad,我还没有添加那个实例。)
实际上,如果这种类型的语义真的很合理,我自己有点怀疑。毕竟,用不同的离散标签注释的点基本上存在于完全不相交的空间(-sector)中,但它们可以通过向量空间视图任意关闭,实际上即使这些点明显不同,你也有 fmap f (WithAny y x) = WithAny (f y) x
。