Monadic空间图书馆?坐标的矢量包裹在未指定类型的monad中?

时间:2016-12-22 18:25:47

标签: haskell monads

这必须存在,对吧?在我看来,数学空间中的点通常是为了携带额外的行李。就我而言,我想用名称和特定于域的类型标记n维空间中的每个点。 monad是表示这种额外行李的正确方法,还是参数化记录的最佳方式呢?哪些库提供了这种开箱即用的功能?

1 个答案:

答案 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