Re: Gee Functional iterators



On 13/07/10 13:17, Martin DeMello wrote:
> I asked about functional methods (map, filter, fold, etc) on the vala
> mailing list, and Didier pointed me to
> https://bugzilla.gnome.org/show_bug.cgi?id=589968
> 
> I'm new to vala in general; could someone explain why adding methods
> to, say, Iterable would break the API?
> 

Because method add to interface means any class which implemented the
interface must implement additional method. Which it currently does not
implement.

It may be changed by fixing Vala bug 546305[1]:

public delegate <A, B> A FoldlMethod(A, B);
public class Iterable<G> {
	public Iterator<G> iterator();
	// OK. Anyone can provide more optimized version -
	// but doesn't have to
	public virtual A foldl(FoldlMethod<A, B> f, A i) {
		Iterator<G> iter = iterator();
		while(iter.next()) {
			i = f(i, iter.get());
		}
		return i;
	}
	// ...
}

> (Also, if we're looking for a good set of methods to implement, Ruby's
> Enumerable module and the Haskell prelude would be a good source of
> inspiration)
> 

(I love Haskell ;) )

> martin

Regards

[1] https://bugzilla.gnome.org/show_bug.cgi?id=546305

Attachment: signature.asc
Description: OpenPGP digital signature



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]