【问题标题】:Get indices of Applicative Traversable without dummy获取 Applicative Traversable 的索引而不使用 dummy
【发布时间】:2015-03-21 06:48:23
【问题描述】:

假设我有一些v,既是Applicative,也是Traversable。如何获得具有v 索引的v?举一个具体的例子,考虑Linear 中的V3。我要V3 0 1 2

一种方法是将mapAccumL 与假人一起使用,例如:

snd $ T.mapAccumL 
    (\idx _ -> (idx + 1, idx)) 
    0 (pure "") :: V3 Int

但是(pure "") dummy 感觉不雅。我们怎样才能以更优雅的方式做到这一点?

【问题讨论】:

  • 空字符串是怎么回事?如果你想要一个“没什么意思”的值,规范的选择是()
  • @dfeuer 链接的帖子包含几个不错的替代方法,但它们都不需要初始值来给出形状。 (但是那个问题也没有要求。)

标签: haskell applicative traversable


【解决方案1】:

如果您只使用ApplicativeTraversable 执行此操作,您将无法使用pure 逃脱。它是那些类中唯一可以为您提供类型值而没有拥有的函数。

此外,您的假人决定了您构建的值的形状。考虑一种类型,例如列表,其中并非所有值都具有相同的形状:您如何在构造 [0][0,1][0,1,2] 之间进行选择? (基于pure 的假人会给你第一个。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-25
    • 2011-10-12
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多