[Rt-commit] [svn] r1119 - in mzscheme: .
Language-MzScheme/lib/Language/MzScheme Language-MzScheme/t
autrijus at pallas.eruditorum.org
autrijus at pallas.eruditorum.org
Sat Jun 19 15:33:50 EDT 2004
Author: autrijus
Date: Sat Jun 19 15:33:49 2004
New Revision: 1119
Modified:
mzscheme/ (props changed)
mzscheme/Language-MzScheme/lib/Language/MzScheme/Object.pm
mzscheme/Language-MzScheme/t/1-basic.t
Log:
----------------------------------------------------------------------
r5672 at not: autrijus | 2004-06-19T19:33:26.315211Z
* Implement auto-increment/decrement mutators.
----------------------------------------------------------------------
Modified: mzscheme/Language-MzScheme/lib/Language/MzScheme/Object.pm
==============================================================================
--- mzscheme/Language-MzScheme/lib/Language/MzScheme/Object.pm (original)
+++ mzscheme/Language-MzScheme/lib/Language/MzScheme/Object.pm Sat Jun 19 15:33:49 2004
@@ -15,6 +15,8 @@
'*{}' => \&to_globref,
'${}' => \&to_scalarref,
'<>' => \&read,
+ '++' => \&increment,
+ '--' => \&decrement,
fallback => 1,
);
@@ -94,6 +96,11 @@
};
}
+sub new {
+ my $self = shift;
+ $self->bless( S->from_perl_scalar($_[0]) );
+}
+
sub to_bool {
my $self = shift;
!S->UNDEFP($self);
@@ -232,6 +239,18 @@
return $p->($self);
}
+sub increment {
+ my $scalar = as_perl_data($_[0]);
+ $scalar++;
+ $_[0] = $_[0]->new($scalar);
+}
+
+sub decrement {
+ my $scalar = as_perl_data($_[0]);
+ $scalar--;
+ $_[0] = $_[0]->new($scalar);
+}
+
1;
__END__
Modified: mzscheme/Language-MzScheme/t/1-basic.t
==============================================================================
--- mzscheme/Language-MzScheme/t/1-basic.t (original)
+++ mzscheme/Language-MzScheme/t/1-basic.t Sat Jun 19 15:33:49 2004
@@ -1,7 +1,7 @@
#!/usr/bin/perl
use strict;
-use Test::More tests => 34;
+use Test::More tests => 40;
use_ok('Language::MzScheme');
@@ -57,6 +57,18 @@
isa_ok($code, 'CODE', 'to_coderef');
is($code->(4), 16, '->(), scheme-lambda');
+my $num = $code->(4);
+is(++$num, 17, 'number ++');
+$num *= 2;
+is($num, 34, 'number *=');
+is(--$num, 33, 'number --');
+
+my $str = $env->eval('"abc"');
+is(++$str, 'abd', 'string ++ (magical)');
+$str x= 2;
+is($str, 'abdabd', 'string x=');
+cmp_ok(--$str, '==', -1, 'string -- (non-magical)');
+
my $lambda = sub { (Hello => reverse @_) };
my $hello = $env->define('perl-hello', $lambda);
isa_ok($hello, 'CODE', 'define');
More information about the Rt-commit
mailing list