Florian Frank <flori / nixe.ping.de> wrote:
> You're misrepresenting my definition. That you have to specify, which 
> type you're expecting, doesn't have to do anything with being type safe. 
> You don't have to specify anything in ML either, a well-known type safe 
> language.

Very interesting that you bring up ML.  I don't know anything about ML
although I have heard about it.  I did a search in Google (so forgive
any misunderstandings) and it seems that ML does have very elaborate
type rules:

http://www.cs.cornell.edu/Info/Projects/NuPrl/book/node176.html

It begins with simple types and specifies how you can build complex
types from simpler types.  Using these type rules, data is always
strongly and precisely typed, whereas the types a function can handle
can be inferred from the data that is handed to it and the operations
it performs.  

You know exactly what a type is and what it means, data is given a
specific type and not one or more types, although functions may handle
different types.  I don't think this is duck typing.

Ruby has a looser concept of duck typing and is type safe within that
definition.  With duck typing, you pretty much invent a type as you
need it.  If you need a duck, you look for a duck.  I'm not sure if
you can or would want to call that strong typing.

Thanks for the help!

Cheers,
Navin.