Static Typing in Python

Donn Cave donn at u.washington.edu
Fri Mar 19 13:44:04 EST 2004


In article <tyf65d18c2c.fsf at pcepsft001.cern.ch>,
 Jacek Generowicz <jacek.generowicz at cern.ch> wrote:

> Donn Cave <donn at u.washington.edu> writes:
> 
> > Speaking of which, Haskell's type system supports type classes
> > like Num (number), where Int and Float are instances of Num
> > that implement its "+" function.
> 
> This is pretty much what you'd do in OCaml too, I believe.
> 
> > I'm probably leaving out a paragraph or two of the interesting
> > parts, but the end result is that 1.5 + 1 works.  Haskell is not
> > weakly typed.
> 
> But the point is that the programmer conrols whether the automatic
> conversion is done or not. In weakly typed languages you get the
> conversion whether you want it or not.

I don't know, the mechanism I alluded to above doesn't
really involve the programmer.

  module Main (main) where

  diff a b | a < b = b - a
           | otherwise = a - b

  main = do
        putStrLn (show (diff 2 5))
        putStrLn (show (diff 2.3 5))

$ runhugs num.hs
3
2.7

Haskell automatically converts between numeric types, to
perform arithmetic including comparisons.

It doesn't just do it any time a value oppears in a context
that requires a specific type - the awk/perl weak typing -
but 1.5 + 1 does work, without any programmer intervention
and without weak typing.

   Donn Cave, donn at u.washington.edu



More information about the Python-list mailing list