提供的indexedMap
类型有一个List
函数:(http://package.elm-lang.org/packages/elm-lang/core/2.0.0/List#indexedMap)
indexedMap : (Int -> a -> b) -> List a -> List b
Same as map but the function is also applied to the index of each element (starting at zero).
indexedMap (,) ["Tom","Sue","Bob"] == [ (0,"Tom"), (1,"Sue"), (2,"Bob") ]
我定义了
Grid
类型的type alias Grid a = List (List a)
我想为此签名为
indexedMap
的Grid
类型创建类似的indexedMap : ((Int, Int) -> a -> b) -> Grid a -> Grid b
函数,但请注意确定如何操作。 最佳答案
您必须使用List.indexedMap
两次:
indexedMap f grid =
List.indexedMap
(\outer list -> List.indexedMap (\inner item -> f (outer,inner) item) list)
grid
第一个
List.indexedMap
处理“外部列表”,第二个List.indexedMap
处理“内部列表”,其中outer
和inner
分别引用这两个列表中的索引。如果您更喜欢没有重点的样式,也可以使用
indexedMap f =
List.indexedMap
(\outer -> List.indexedMap (\inner -> f (outer,inner)))