[Python-Dev] Parrot -- should life imitate satire?

Simon Cozens simon@netthink.co.uk
Thu, 2 Aug 2001 10:30:06 -0700


On Wed, Aug 01, 2001 at 12:42:42AM -0400, Tim Peters wrote:
> 		case BINARY_DIVIDE:

case? Wowsers. Hey, Ruby does that too. We use function pointers,
FWIW.

Oh, and here's our divide, for comparison:

PP(pp_divide)
{
    dSP; dATARGET; tryAMAGICbin(div,opASSIGN);
    {
      dPOPPOPnnrl;
      NV value;
      if (right == 0.0)
        DIE(aTHX_ "Illegal division by zero");
      value = left / right;
      PUSHn( value );
      RETURN;
    }
}

See, this is why we need a new interpreter. :)

In slightly more pseudo code:

PP(pp_divide)
{
    get_the_stack_pointer;
    find_somewhere_to_put_result;
    check_if_overloaded;
    {
      NV right = SvNV(POP);
      NV left  = SvNV(POP);
      NV value;
      if (right == 0.0)
        DIE(aTHX_ "Illegal division by zero");
      value = left / right;
      PUSHn( value );
      RETURN;
    }
}