Hello,

About #valueWithInterval: and co,

I added that in Pharo because they are present in javascript with the same name and I think they were very convenient to easily implement UI animation.

According to the number of discussion about these 2 methods, I think they are useful, but we should rethink the API and the naming. For example one cannot set the Process priority for these methods and it's by default set to background priority which is not very good.

A usecase is:

process := [myAnimation run] valueWithInterval: 1 second.
[ ... ]
process terminate.

In pharo we use 'Delay wait' so #evaluateEveryMilliseconds: instead of #evaluateEvery: 100 ms does not really make sense to me. Am I missing something there ?

What about #evaluateEvery:processPriority: and #evaluateEvery: that sets a default priority ?

#valueAfterWaiting: is named valueWithTimeout: in javascript. What about #evaluateLater: and #evaluateLater:priority:


2014-03-28 8:01 GMT+01:00 Pharo4Stef <pharo4Stef@free.fr>:


Begin forwarded message:

From: Richard Sargent <richard.sargent@gemtalksystems.com>
Subject: Feedback for Pharo 3
Date: 27 Mar 2014 18:46:11 GMT+1
To: St�phane Ducasse <stephane.ducasse@inria.fr>

Hi St�phane,

Benjamin Pollack @bitquabit just tweeted the features list for 3.0. I have to say that you folks have some really exciting things happening there.

However, the naming of the methods for the "Simple Delayed Execution for Blocks" needs work. The #value* methods are so named because they return the value from the Block's execution. Neither #valueWithInterval: nor #valueAfterWaiting: answers the result of the Block's evaluation.

The naming of the arguments is questionable, too. The name "aDelay" suggests an instance of a given class, but the comment suggests the argument is an integer (milliseconds). I can see argument for a Duration as the argument, in the expression [...something...] evaluateEvery: 100 ms. I don't think it can get clearer than that. But for performance, one might want an integer argument. Here the naming gets challenging. #evaluateEveryMilliseconds: is as close as I can come to readable, but I don't really like it either.


Thanks for all your hard work (and good work!).
Richard Sargent