Cheers,
Doru
> On Dec 21, 2016, at 8:13 AM, Alexandre Bergel <alexandre.bergel(a)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 <stepharong(a)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-dev(a)list.inf.unibe.ch
>>
https://www.list.inf.unibe.ch/listinfo/moose-dev
>
>
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel
http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>
> _______________________________________________
> Moose-dev mailing list
> Moose-dev(a)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."