Trimming mercilessly...
On Sat, 21 Oct 2000, Charles Hixson wrote:

> Hugh Sasse Staff Elec Eng wrote:
> 
> > On Sat, 21 Oct 2000, Charles Hixson wrote:
> >
> > parameters it only make sense for them to be in a subset of the
> > class heirarchy.   There is no way to express this constraint in Ruby
> 
> This is a run time check in a dynamically bound language.  I'm pretty sure

I think your example below gives a good reason why...
> 
> > or Python.  I have not really used Lisp or Smalltalk.  What I mean is
> > that it is a weakness [in typing?] to allow a parameter to be of *any*
> > class, for example when you know it must be a Numeric
> > or descendent of Numeric.  So does this weakness create a different
	[...] 
> address this in some way or other.  But notice that none of those are really
> dynamically bound.  Ruby's type system seems more akin to that of Self.  Run
> time checks are the only way to handle this.  If you want, you could raise an
> exception.  How else would you want this to be handled?  You can't know at

I was thinking that some tests could be done at compile time...so
I have not considered the run-time case.

> "compile" time what the type of the variable will be.  But it would be nice

I see freom below, why not.
> 
> > strength which outweighs the inability to type-check at compilation time?
> 
> Actually, there's nothing wrong with passing in a totally separately declared
> class, as long as it ended up with the appropriate API.  This is both a
> strength and a weakness, but I think more of a strength.  Consider:
> 
> There is a standard problem that models inheritance in classes and
> evolution.  Call it the bird problem.

Ah, the "Birds fly.  Except penguins, kiwis, ostriches,.." problem

> Now a Rubyesque solution would be a bit different than the normal one, and
> would involve mix-ins.
> consider constructing separate trees of inheritance, one for descent, and the
> other for capabilities.  To create a species, you inherit from the
> inheritance tree, and mix-in the appropriate capabilities.  Thus penguins
> don't end up with flight being denied, but just not being available.  I'm not
> sure that this is an appropriate construct, I'm still thinking about it, but
> it is a way in which mix-ins more than substitute for the lack of  multiple
> inheritance.
> 
At first I thought this ansered a different question, but now I see that
Mix-in effectively changes a "type", and pushes it outside the regular
class system.  That fundamentally damages class based type checking.

> >         Hugh
> >         hgs / dmu.ac.uk
> 
> -- (c) Charles Hixson
> --  Addition of advertisements or hyperlinks to products specifically
> prohibited
> 
	Hugh>