POLA fetch
From Erights
(Difference between revisions)
Kevin Reid (Talk | contribs) |
Kevin Reid (Talk | contribs) (→Proposals: note need to provide default-value behavior) |
||
Line 9: | Line 9: | ||
== Proposals == | == Proposals == | ||
- | * Make the second argument usually an ejector. Ejectors do not return values and are robust against being invoked multiple times; if some other sort of object is being used, its author is more likely to consider the multiple invocation issue. --[[User:Kevin Reid|Kevin Reid]] 11:25, 12 April 2008 (CDT) | + | * Make the second argument usually an ejector. Ejectors do not return values and are robust against being invoked multiple times; if some other sort of object is being used, its author is more likely to consider the multiple invocation issue. If we do this, then utilities should be provided for default-value behavior. --[[User:Kevin Reid|Kevin Reid]] 11:25, 12 April 2008 (CDT) |
[[Category:Unresolved design issues]] | [[Category:Unresolved design issues]] |
Revision as of 16:35, 12 April 2008
to fetch(key, absentThunk)
The fetch/2
protocol for collections does not obey POLA:
- The collection gets access to the value of absentThunk.
- The collection may invoke absentThunk and yet return something else.
- The collection may invoke absentThunk more than once, or after fetch returns.
Proposals
- Make the second argument usually an ejector. Ejectors do not return values and are robust against being invoked multiple times; if some other sort of object is being used, its author is more likely to consider the multiple invocation issue. If we do this, then utilities should be provided for default-value behavior. --Kevin Reid 11:25, 12 April 2008 (CDT)