Trouble installing Chuck

Lex Spoon lex at
Fri May 28 21:21:45 UTC 2004

Bryce Kampjes <bryce at> wrote:
> P.S. Chuck definately looks very cool. Does it use any form of
> contour splitting?

Chuck uses Agesen's CPA, i.e. it splits based on parameter types.  So
SmallInteger>>+  gets analyzed separately when its argument is a
SmallInteger and when its argument is a LargePositiveInteger, etc.

More possible splitting should help, but mostly Chuck is pretty minimal
right now.  All in the name of science.  :)  No, really!  Imagine.  If I
were more industrious and there were a big pile of inference rules in
Chuck, then I could not claim to have shown that the AI approach of
Chuck is why it works.  As it is, there are so few rules that it must
surely be the architecture and not the fancy rules.

Still, there are a few things that seem essential even in a minimal
Smalltalk inferencer.  One is dealing with blocks thoroughly.  Chuck has
a special kind of type called a "block type" which pinpoints a specific
block in the code plus a context (CPA-ish set of parameter types) for
the surrounding method (and block(s)!) that the block is created in.  It
also includes symbol types (i.e., there is a type including just the
symbol #abc), and it will trace flow forward.  These latter two items
are essential if your program uses #perform: and you still want to get
correct results that aren't ridiculously bad.  As a side benefit,
forward flow also lets Chuck figure out what the type of block
parameters are when the context doesn't tell you; you can trace the
block forward to find all the invocations of #value: that invoke the


More information about the Squeak-dev mailing list