List 如何为网格(2d列表)类型创建indexedMap函数?

List 如何为网格(2d列表)类型创建indexedMap函数?,list,function,dictionary,elm,List,Function,Dictionary,Elm,对于提供的列表类型,() 我制作了一个网格类型,定义为类型别名网格a=列表(列表a) 我想为这个Grid类型创建一个类似的indexedMap函数,签名为indexedMap:((Int,Int)->a->b)->Grid a->Grid b,但我知道如何操作。您必须使用列表。indexedMap两次: indexedMap f grid = List.indexedMap (\outer list -> List.indexedMap (\inner item -> f

对于提供的
列表
类型,()

我制作了一个
网格
类型,定义为
类型别名网格a=列表(列表a)


我想为这个
Grid
类型创建一个类似的
indexedMap
函数,签名为
indexedMap:((Int,Int)->a->b)->Grid a->Grid b
,但我知道如何操作。

您必须使用
列表。indexedMap
两次:

indexedMap f grid =
  List.indexedMap
    (\outer list -> List.indexedMap (\inner item -> f (outer,inner) item) list)
    grid
第一个
List.indexedMap
处理“外部列表”,第二个
List.indexedMap
处理“内部列表”,其中
outer
internal
分别指这两个列表中的索引

如果您更喜欢无点样式,也可以使用

indexedMap f = 
  List.indexedMap
    (\outer -> List.indexedMap (\inner -> f (outer,inner)))
indexedMap f = 
  List.indexedMap
    (\outer -> List.indexedMap (\inner -> f (outer,inner)))