Hi Stuart and Rich,

Stuart Halloway <[EMAIL PROTECTED]> writes:

> Hi Jose,
>
> The key determinant of metadata in Clojure is whether the data is  
> orthogonal to equality. Would two tasks with identical behavior but  
> different staleness predicates be equal? I would say no, hence a  
> staleness predicate would be data, not metadata.
>

Only if you consider the staleness predicate as metadata attached to the
build procedure. In my proposal, all behaviour would be metadata, and
staleness predicates would be part of that behaviour.

I was thinking of a task as a set of generic functions (staleness,
build...) acting on data with the right structure. The whole bunch of
functions (stored in a map, actually as Rich suggests) would become
metadata attached to the data. Something like an alternative to
multimethods, if you will. That way, the actual data can be viewed as an
entity in and by itself, usable in other contexts.

One could also think of it as cheap prototypes (in the Self vein) where
method slots are stored as metadata [1]. It could be argued, though,
that two objects with different methods should be considered different,
and metadata would then be a bad implementation choice. But then again,
comparing behaviour (as represented by procedures) is always a pesky
business.

Thanks to both for chiming in!

Cheers,
jao

Footnotes:

[1] Actually, another fun project would be a port of something like
Prometheus (http://www.forcix.cx/software/prometheus/prometheus.html) to
Clojure [2], perhaps using such a mechanism.

[2] BTW, what's the accepted spelling: Clojure or clojure?



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to