Closed Caid11 closed 3 hours ago
This version works:
type mapMember<k,v>
Unoccupied
Occupied(key: k, value: v)
pub struct arrayBackedMap<k,v>
hashFunc : k -> int
keyCmp : (k,k) -> bool
members: vector<mapMember<k,v>>
pub fun map-with-key(m: arrayBackedMap<k,v>, f : (k,v) -> e a) : e arrayBackedMap<k,a>
val new-mems = m.members.map(fn(mem)
match mem
Unoccupied -> Unoccupied
Occupied(ka,va) -> Occupied(ka, f(ka,va))
)
ArrayBackedMap(m.hashFunc, m.keyCmp, new-mems)
pub fun main()
()
I believe the problem was that the initial version used m(members = new-members)
to create a new map, which expects members to be mapMember<k,v>
. I needed to create a map with mapMember<k,a>
, so I had to switch it to ArrayBackedMap(m.hashFunc, m.keyCmp, new-mems)
.
This code fails to compile:
...with this error message:
It feels like this should work, given that
arrayBackedMap<k,v>
specifies thatmembers
is a vector ofmapMember<k,v>
.My configuration's details: