Language::MzScheme - Perl bindings to PLT MzScheme


Language-MzScheme documentation Contained in the Language-MzScheme distribution.

Index


Code Index:

NAME

Top

Language::MzScheme - Perl bindings to PLT MzScheme

VERSION

Top

This document describes version 0.09 of Language::MzScheme, released December 22, 2004.

SYNOPSIS

Top

    use Language::MzScheme;
    my $env = Language::MzScheme->new;
    my $obj = $env->eval('(+ 1 2)');

    # See t/*.t in the source distribution for more!

DESCRIPTION

Top

This module provides Perl bindings to PLT's MzScheme language.

For a proof-of-concept interpreter that can mix Perl and MzScheme code, see the mzperl utility bundled with this distribution.

The documentation is sorely lacking at this moment. For an overview of supported features, please consult t/*.t in the source distribution.

SEE ALSO

Top

mzperl, Inline::MzScheme

Language::MzScheme::Env, Language::MzScheme::Object

http://plt-scheme.org/software/mzscheme/

AUTHORS

Top

Autrijus Tang <autrijus@autrijus.org>

COPYRIGHT

Top


Language-MzScheme documentation Contained in the Language-MzScheme distribution.
package Language::MzScheme;
$Language::MzScheme::VERSION = '0.09';

use strict;
use vars qw(@EXPORT @EXPORT_OK %EXPORT_TAGS);
use Language::MzScheme_in;
use Language::MzScheme::Env;
use Language::MzScheme::Object;

BEGIN {
    @EXPORT_OK = @EXPORT;
    @EXPORT = ();
    %EXPORT_TAGS = ( all => \@EXPORT_OK );
}

sub new {
    my $self = shift;
    return Language::MzScheme::Env->new(@_);
}

if (!$Language::MzScheme::Initialized) {
    no strict 'refs';
    if (defined &mzscheme_init) {
        mzscheme_init();
        $Language::MzScheme::scheme_case_sensitive = 1;
    }

    foreach my $func (@EXPORT_OK) {
        my $idx = index(lc($func), 'scheme_');
        $idx > -1 or next;
        my $sym = substr($func, $idx + 7);
        my $code = __PACKAGE__->can($func);
        *$sym = sub { shift; goto &$code }
            unless defined &$sym or defined $$sym;
    }

    foreach my $func (@EXPORT_OK) {
        my $idx = index(lc($func), 'mzscheme_');
        $idx > -1 or next;
        my $sym = substr($func, $idx + 9);
        my $code = __PACKAGE__->can($func);
        *$sym = sub { shift; goto &$code }
            unless defined &$sym or defined $$sym;
    }

    $Language::MzScheme::Initialized++;
}

1;

__END__