Haskell 一元空间图书馆?用未指定类型的单子包裹的坐标向量?

Haskell 一元空间图书馆?用未指定类型的单子包裹的坐标向量?,haskell,monads,Haskell,Monads,这一定存在,对吗?在我看来,数学空间中的点常常被用来承载额外的负担。在我的例子中,我想用一个名称和一个特定于域的类型来标记n维空间中的每个点。单子是表示这些额外行李的正确方法,还是参数化记录是最好的方法?哪些库提供了这种开箱即用的功能?不确定这是否是您的意思,但可能是这样的(目前它更多的是实验性的实现细节,而不是稳定的导出类型): with any x y的行为方式与x的行为方式相同,但每个值也有一个额外的y与其关联,该值仅被视为一个“标记”,不会通过连续的空格操作进行更改。例如 WithA

这一定存在,对吗?在我看来,数学空间中的点常常被用来承载额外的负担。在我的例子中,我想用一个名称和一个特定于域的类型来标记n维空间中的每个点。单子是表示这些额外行李的正确方法,还是参数化记录是最好的方法?哪些库提供了这种开箱即用的功能?

不确定这是否是您的意思,但可能是这样的(目前它更多的是实验性的实现细节,而不是稳定的导出类型):

with any x y
的行为方式与
x
的行为方式相同,但每个值也有一个额外的
y
与其关联,该值仅被视为一个“标记”,不会通过连续的空格操作进行更改。例如

  WithAny y x ^+^ WithAny _ ξ = WithAny y $ x ^+^ ξ
与这些实例“正交”地,类型在第二个参数中是单子,带有

  fmap f (WithAny y x) = WithAny (f y) x
(正如danidiaz所说,它也是一个特别的comonad,我只是还没有添加该实例。)


实际上,我自己也有点怀疑这种类型的语义是否真的合理。毕竟,用不同离散标记注释的点基本上生活在完全不相交的空间(-扇形)s中,但它们可以在向量空间视图中任意靠近,事实上,你有
距离(任意t x)(任意q x)≡ 0
即使这些点明显不同。

您能为您的想象提供一个示例类型和Monad实例吗?您希望bind做什么?用额外的数据注释现有值比“一元”更为“共元”:请注意,2元组是注释值的最简单方式,它有
Comonad(,)e)
ComonadEnv(,)e)
实例。实际上,也许使用记录更简单。@jberryman是的,我想我应该问自己这个问题。这里没有什么特别的,只是需要携带额外的数据。正如丹尼迪亚兹指出的,也许唱片是实现这一目标的正确途径。我所希望的是一个事实上的标准,可以携带任意载荷和坐标向量。我想可能会有大量为它编写的代码。WithAny solution LeftRoundound提出的方案可能是迄今为止我见过的最接近的东西……您可能会对sigfpe关于细胞自动机和comonads的内容感兴趣
  fmap f (WithAny y x) = WithAny (f y) x