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
"If you interrupt the barber while he is cutting your hair,
you will end up with a messy haircut."