FYI, I talked to Justin and he's not particularly optimistic on including a memoizing function in Quiver, due to the difficulties of writing something sufficiently generic in Dart.

This memoizer is specific in that it only takes one argument, and knows it can store the memoized value in an Expando on that argument.

As for GC, I did some research. In Dartium, Expando is implemented with a weak reference, so it won't leak memory. In dart2js mode, Expando properties are actually stored as properties on the Javascript objects themselves, so they will be GC'd properly. So no GC issues.