Author image ☺唐鳳☻
and 1 contributors


Language::MzScheme::Env - MzScheme runtime environment


    use Language::MzScheme;
    my $env = Language::MzScheme->new;
    # ...


None at this moment.


All methods below, except new, returns an Language::MzScheme::Object instance.


Constructs and returns a new environment object. Calling this method is identical to Language::MzScheme->new.


Given a global MzScheme variable name $name, returns the current value.

define($name, $code, $sigil)

Defines a new MzScheme primitive $name from $code, with the calling context $sigil, and returns it.

If $sigil is omitted, look at the end of $name for a sigil character; if not found, uses the auto context. See "CONTEXTS" for a list of sigils and their meanings.

If $code is omitted, defines a package with the name $name and import all its symbols. Otherwise, pass it and the sigil to the lambda method, and bind the returned lambda to $name.

lambda($code, $sigil)

Builds and returns a MzScheme procedure, as a wrapper for $code.

If $code is a Perl code reference, returns a lambda that takes any number of parameters, under the context specified by $sigil:

    (func ...)          ; ==> $code->(...)

Otherwise, treat $code as a class name or an object, and returns a lambda that takes a mandatory method argument, followed by any number of parameters.

    (obj 'method ...)   ; ==> $obj->$method(...)

Generally, you should only set $sigil for code references, and let the user specity the context with the method name:

    (obj 'set! ...)     ; void context
    (obj 'isa? ...)     ; boolean context


Evaluates a MzScheme expression, passed as an object or a string, and returns the result.

apply($name, @args)

Applies a MzScheme procedure, passed as an object or a global name, to @args, and returns the result.


Return a MzScheme object that represents the content of $scalar, which may be a simple scalar or a reference.


Returns a MzScheme symbol object named $string.


There are 10 different sigils, each representing a way to interpret values returned by a Perl function or method.

If no sigils are specified, then auto-context is assumed: it will call the perl code with Perl's list context, and look at the number of values returned. If there is exactly one return value, receive it as a scalar; otherwise, returns a MzScheme list that contains all return values.

    ; list context calls
    (perl-func "string")    ; auto-context
    (perl-func@ "string")   ; a list
    (perl-func^ "string")   ; a vector
    (perl-func% "string")   ; a hash-table
    (perl-func& "string")   ; an association-list

    ; scalar context calls
    (perl-func$ "string")   ; a scalar of an appropriate type
    (perl-func~ "string")   ; a string
    (perl-func+ "string")   ; a number
    (perl-func. "string")   ; a character
    (perl-func? "string")   ; a boolean (#t or #f)

    ; void context calls
    (perl-func! "string")   ; always #<void>


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


Autrijus Tang <>


Copyright 2004 by Autrijus Tang <>.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.