Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: Perl allows you to change the definition of false to make it true. (And vice versa.)

by LanX (Canon)
on Dec 13, 2012 at 22:48 UTC ( #1008741=note: print w/ replies, xml ) Need Help??


in reply to Perl allows you to change the definition of false to make it true. (And vice versa.)

Actually I can see useful applications for this.

When trying to convert (and not just interpret) other languages like LISP or JS to Perl one of the biggest problems are implicit typeconversions at edgecases.

(Thoroughly catching all those edgecases slows such conversions ridiculously down!)

For instance this way, one could try to patch booleans in a way that they stringify to "false" and "true" like in JS.

Thanks for showing! =)

Cheers Rolf


Comment on Re: Perl allows you to change the definition of false to make it true. (And vice versa.)
Re^2: Perl allows you to change the definition of false to make it true. (And vice versa.)
by tobyink (Abbot) on Dec 14, 2012 at 15:09 UTC

    This is what boolean does.

    perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'
      > > ... For instance this way, one could try to patch booleans in a way that they stringify to "false" and "true" like in JS. ...

      > This is what boolean does.

      well, not yet:

      JS-Console

      >>> true true >>> "stringification: " + (1==1) "stringification: true"

      use v5.10.0; use boolean; say true; say "stringification:" . (1==1);

      output:

      /usr/bin/perl -w /tmp/boolean.pl 1 stringification:1

      but using dualvars could help.

      UPDATE:

      kind of

      use Scalar::Util qw/dualvar/; my $false = dualvar 0, "false"; my $true = dualvar 1, "true"; say $true; say "stringification:" . $true; say "numification: " . (0+$true); say $false; say "stringification: " . $false; say "numification: " . (0+$false);

      Cheers Rolf

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1008741]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (13)
As of 2014-07-24 18:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (165 votes), past polls