16 - pass the galaxy test:
https://docs.google.com/presentation/d/1FWcSJfZITITckrXyfihpuPnX5xf0e4kOhCnsoRFyLfI/edit#slide=id.p
17 - exchange access categories with contractual code migration
18 - emoji feedback
On 12/28/2016 1:11 PM, Charlie Robbats wrote:
Hi! Here's the master plan, a
Consider words from the street. All those potential Pharo users!
https://www.youtube.com/watch?v=jMnLHmTXjgU&list=PLJiUTrmz_5UMkFsdjCRJD0bpRpuswwccx&index=1
On 12/19/2016 8:11 PM, Charlie Robbats wrote:
This is how I deal with ptsd. Change the system.
On 12/19/2016 8:08 PM, Charlie
I'd like to suggest you teach people Smalltalk natively, so they don't
get distracted by the false view of a filetree of classes. One huge
differentiator of Smalltalk, from any other language out there, is the
live object environment. You should use that environment to teach from
or the nuance
ray := { 1 }.
performClosure value: array value: #at:put: value: {1. 'Hello, world'}.
array inspect.
On 10/16/2016 10:03 AM, Charlie Robbats wrote:
and a little block cleanup:
| array lookupClosure performClosure |
lookupClosure := [].
lookupClosure := [:cls :selector |
ray := { 1 }.
performClosure value: array value: {1. 'Hello, world'}.
array inspect.
Charlie
On 10/16/2016 9:54 AM, Charlie Robbats wrote:
Here's a little change to get your #perform:withArguments: implemented.
| array lookupClosure method |
array := { 1 }.
lookupClosure := [].
lookupC
iver: array arguments: {1. 'Hello, world'}.
array
On 10/16/2016 9:32 AM, Ben Coman wrote:
On Sun, Oct 16, 2016 at 9:11 PM, Charlie Robbats
wrote:
Here, Dmitry, try this code in playground...maybe helps you understand
| lookupClosure |
lookupClosure := [].
lookupClosure :=
Thanks, that's a good improvement, more readable.
On 10/16/2016 9:32 AM, Ben Coman wrote:
On Sun, Oct 16, 2016 at 9:11 PM, Charlie Robbats
wrote:
Here, Dmitry, try this code in playground...maybe helps you understand
| lookupClosure |
lookupClosure := [].
lookupClosure := [:cls :sel
Here, Dmitry, try this code in playground...maybe helps you understand
| lookupClosure |
lookupClosure := [].
lookupClosure := [:cls :selector |
(cls == nil)
ifTrue: [Warning signal: ('selector lookup failure: ', selector)].
(cls methodDictionary
at: selector
ifAbs
I think the nub of your confusion is twofold. The method #at:put: is a
keyword method and it isn't right to think o them as two keys. It is one
compound key and unlike most every other system, Smalltalk keyword
message sends allow the programmer to name each argument. This is very
fine indeed.