http://qs321.pair.com?node_id=414895


in reply to Re: strong typing
in thread (Completely OT) - Hero(i)n programming language on Slashdot

print $a+$ref_b; #coerce reference into number Those are both scalars. Not a type conversion.
Humm, no! To make any arithmetic operation we need to convert the string (that are just a sequence of bytes), into numbers, where we use 4 bytes (32 bits processor) to make the calculation. (this is standart calculation ok!)

The wonderful job that Perl does for us, with speed, is to convert automatically all the boolean, integer, floating and string types with a single type, SCALAR.

Graciliano M. P.
"Creativity is the expression of liberty".

Replies are listed 'Best First'.
Re^3: strong typing
by hardburn (Abbot) on Dec 15, 2004 at 14:12 UTC

    I said they're both scalars. Perl's type system has no concept of "integer", "boolean", etc.--it only knows about scalars, arrays, etc. Since the orginal code presented only deals with scalars, there is only one type involved: scalars.

    "There is no shame in being self-taught, only in not trying to learn in the first place." -- Atrus, Myst: The Book of D'ni.

      Perl's type system has no concept of "integer", "boolean", etc.--it only knows about scalars...
      But that isn't entirely true:
      print 5 == "foo"; Argument "foo" isn't numeric in numeric eq (==)

      The fact that these types are checked/enforced at run time rather than compile time doesn't mean they aren't types. It's called dynamic typing.

        Those aren't types in Perl. Those are values.

      In the high level you are right, Perl makes a good abstraction, where we don't need to think about numeric types and booleans. But internally it have to do this convertions to integer to make the arithmetic operation, and than it converts again to string. SCALAR is the group of all this types!

      Graciliano M. P.
      "Creativity is the expression of liberty".