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.