- Since the mini-project lives, I think we should create a sourceforge acount for it.
- I have extended the interface with IsEmpty, Count, ApplyOnce, ...
- I really like the fluent interface. SelectThenCollect is no longer necessary, we can do Select(...).Collect(...)
- if in the initial Enumerable we have m elements and we select n from them, SelectThenCollect is O(m). Select(...).Collect(...) will take O(m)+O(n). (in the current implementation).
- Open Question: the current implementation does eager-evaluation: the select is computed when the method is called. Do we need a lazy-implementation? It could look like a query definition, and the code will be more declarative:
- IEnumerating
query = Enumerating.On(several_things).Select(IsEven).Collect(ItsColor); - IEnumerable
result_items = query.Eval(); - The solution might cache, the specified delegates, for a later (lazy), usage. This might lead to some unwanted side-effects: the garbage collector will not release the objects referenced in the delegates in the query definition, until ... (the query is released).
- Through laziness we could work on very large (infinite) data streams.
Monday, July 09, 2007
Functional Idioms, Take Two
My friend Ralf has extended the Enumerating module, adding a fluent interface.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment