I wrote
cull: anArg
"Execute the receiver with one or zero argument.
[ 1 + 2 ] cull: 5
returns 3
[ :x | 1+ 2 + x] cull: 5
returns 8
"
^numArgs = 0
ifTrue: [self value]
ifFalse: [self value: anArg]
cull: firstArg cull: secondArg
"Execute the receiver with two or less arguments.
[ 1 + 2 ] cull: 5 cull: 6
returns 3
[ :x | 1+ 2 + x] cull: 5
returns 8
[ :x | 1+ 2 + x] cull: 5 cull: 3
returns 8
[ :x : y | 1+ y + x] cull: 5 cull: 2
returns 8
"
^numArgs < 2
ifTrue: [self cull: firstArg]
ifFalse: [self value: firstArg value: secondArg]
cull: firstArg cull: secondArg cull: thirdArg
"Execute the receiver with three or less arguments. Check cull:cull:
for examples"
^numArgs < 3
ifTrue: [self cull: firstArg cull: secondArg]
ifFalse: [self value: firstArg value: secondArg value: thirdArg]
cull: firstArg cull: secondArg cull: thirdArg cull: fourthArg
"Execute the receiver with four or less arguments. Check cull:cull: for
examples"
^numArgs < 4
ifTrue: [self cull: firstArg cull: secondArg cull: thirdArg]
ifFalse: [self value: firstArg value: secondArg value: thirdArg
value: fourthArg]
Will add a bug entry
Stef