Doru I have multiple missingValue so that they embed their own strategy. Now I do not know for the scenario of alex.
For example, obtaining the classes for which metrics cannot be computed (e.g., source code is missing).
Alexandre
Cheers, Doru
On Dec 21, 2016, at 8:13 AM, Alexandre Bergel alexandre.bergel@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@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@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@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."
-- Using Opera's mail client: http://www.opera.com/mail/ _______________________________________________ Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev