Hi Alex,

Following the design proposed by Stef, in your case you would use a different 
collection.

Cheers,
Doru


> On Dec 21, 2016, at 8:13 AM, Alexandre Bergel <alexandre.ber...@me.com> wrote:
> 
> Hi Stef,
> 
> You are raising an interesting point to discuss. This MissingValue is indeed 
> better than having -1
> Something to keep in mind: it may be that one would like to focus on the 
> missing value and not really the value.
> 
> Consider:
> 
>> testCollect
>> 
>>      | uarray collected |
>>      uarray := UniformOrderedCollection new.
>>      uarray add: 10.
>>      uarray add: 20.
>>      uarray add: (MissingValue discarding).
>>      collected := uarray collect: [ :each | each ].  
>>      self assert: collected size equals: 2.
> 
> It could well be that I would like to be able to query over the MissingValue. 
> Can something like possible: uarray collect: #isMissing
> ?
> 
> Cheers,
> Alexandre
> 
> 
>> On Dec 20, 2016, at 10:15 PM, stepharong <stephar...@free.fr> wrote:
>> 
>> Hi dear great OO designers
>> 
>> Here is a little challenges for your brainy souls :)
>> 
>> In Moose when we compute metrics it may happen than a tool (often external 
>> to pharo) does not compute a metrics
>> and when we request it in moose we check and often we return a not so good 
>> -1.
>> 
>> I'm trying to brainstorm on a solution
>> 
>> - first may be the simplest way is to not invoke a metrics when it is not 
>> computed. But it means that we should know it and that we should have a 
>> registration mechanism. After all this is probably the best solution.
>> 
>> - Second we were thinking to use exception but when we have multiple 
>> entities missing one metrics.... I have serious doubts.
>> 
>> - Second I was thinking about having the following behavior
>> 
>> testCollect
>> 
>>      | uarray collected |
>>      uarray := UniformOrderedCollection new.
>>      uarray add: 10.
>>      uarray add: 20.
>>      uarray add: (MissingValue discarding).
>>      collected := uarray collect: [ :each | each ].  
>>      self assert: collected size equals: 2.
>> 
>> testDo
>> 
>>      | res uarray |
>>      uarray := UniformOrderedCollection new.
>>      uarray add: 10.
>>      uarray add: 20.
>>      uarray add: (MissingValue discarding).
>>      uarray add: 40.
>>      res := 0.
>>      uarray do: [ :each | res := res + each ].       
>>      self assert: res equals: 70.
>> 
>> 
>> testCollectDefaulting
>> 
>>      | uarray collected |
>>      uarray := UniformOrderedCollection new.
>>      uarray add: 10.
>>      uarray add: 20.
>>      uarray add: (MissingValue default: 33).
>>      collected := uarray collect: [ :each | each ].  
>>      self assert: collected size equals: 3.
>>      self assert: collected third equals: 33
>> 
>> 
>> I basically started to implement
>> 
>> 
>> do: aBlock
>>      "Refer to the comment in Collection|do:."
>>      1 to: self size do:
>>              [:index | (self at: index) toDo: aBlock on: self]
>> 
>> 
>> 
>> collect: aBlock
>>      "Evaluate aBlock with each of the receiver's elements as the argument.
>>      Collect the resulting values into a collection like the receiver. Answer
>>      the new collection."
>> 
>>      | newCollection |
>>      newCollection := self species new.
>>      self
>>              do: [ :each | each toCollect: aBlock on: newCollection ].
>>      ^ newCollection
>> 
>> 
>> and
>> 
>> DiscardingValue >> toCollect: aBlock on: aCollection
>>      "discard computation"
>>      ^ self
>> 
>> 
>> Object >> toCollect: aBlock on: aCollection
>> 
>>      ^ aCollection add: (aBlock value: self)
>> 
>> 
>> So I imagine that you see the design and I wanted to get your point of view.
>> 
>> -- 
>> Using Opera a kind of bad mail client but far better than thunderbird
>> _______________________________________________
>> Moose-dev mailing list
>> moose-...@list.inf.unibe.ch
>> https://www.list.inf.unibe.ch/listinfo/moose-dev
> 
> -- 
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel  http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> 
> 
> 
> _______________________________________________
> Moose-dev mailing list
> moose-...@list.inf.unibe.ch
> https://www.list.inf.unibe.ch/listinfo/moose-dev

--
www.tudorgirba.com
www.feenk.com

"If you interrupt the barber while he is cutting your hair,
you will end up with a messy haircut."


Reply via email to