1

私がいくつか持っているとしましょう。vこれは両方Applicativeであり、またTraversableです。vのインデックスでを取得するにはどうすればよいvですか? 具体的な例として、V3fromを考えてみましょうLinear。欲しいV3 0 1 2

1 つの方法はmapAccumL、ダミーを使用することです。たとえば、次のようになります。

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

しかし、(pure "")ダミーはエレガントではありません。よりエレガントな方法でこれを行うにはどうすればよいでしょうか?

4

1 に答える 1

2

と だけでpureこれを行っている場合、 を使用してエスケープすることはありません。これらのクラスで、型の値をまだ持っていなくても値を与える唯一の関数です。ApplicativeTraversable

また、ダミーは、構築する値の形状を決定します。[0]リストのような、すべての値が同じ形であるとは限らない型を考えてみましょ[0,1][0,1,2]。( にpure基づくダミーは、最初のダミーを提供します。)

于 2015-03-21T07:04:27.840 に答える