lizpop iconlizpop 0.4.0

Scheme interpreter in Python
lizpop is a scheme interpreter for Python.

Installation

 Simply run python setup.py install.

 e.g.

  tar zxvf lizpop-0.3.1.tar.gz
  cd lizpop-0.3.1
  sudo python setup.py install

Usage

To run interactively:

 python -O -m lizpop.run

To run a Scheme script in a file:

 python -O -m lizpop.run yourfile.scm

For more info about command-line options:

 python -O -m lizpop.run -h

Features

Subset of Scheme R5RS

 See the Restrictions section for more details.

Has interfaces to Python

 e.g.

 $ cat helloworld.py
 def hello(s="world"):
 return u"Hello %s!" % s.capitalize()

 $ python -O -m lizpop.run
 > (define *helloworld* (import "helloworld"))
 > (define hello (attr *helloworld* 'hello))
 > (hello "friends")
 "Hello Friends!"


 For more details, See the IFPY.rst file in this package.

Regular Expression literal.

 The following literal is a Regular Expression Object.

 #/PATTERN/FLAGS
 PATTERN: Regular expression pattern
 FLAGS: Regular expression flags.
 i-- ignore case m-- multi-line s-- dot matches all
 u-- Unicode dependent L-- locale dependent x-- verbose


 Examples

 ;; A simple matching
 > (re-search #/(\d+):(\d+)/ "Aug 14") ;; not match
 #f
 > (re-search #/(\d+):(\d+)/ "Aug 14 08:30") ;; match
 < _sre.SRE_Match object at ... >

 ;; Get subgroup
 > (re-group (re-search #/(\d+):(\d+)/ "Aug 14 08:30") 1 2)
 ("08" "30")

 ;; Replace string
 > (re-gsub #/< (\/?)h\d >/i "< \\1H3 >" "< h1 >Features:< /h1 >")
 "< H3 >Features:< /H3 >"
 >


 For more info, run help procedure.

 e.g.
 > (help-list #/(^re-)|(regex)/)
 > (help re-match re-search re-group re-gsub)


Supports multi-byte characters

 Only utf-8 encoding now.

EML(EMbedded Lizpop)

 EML is a template language for embedding Lizpop code in text file.

 EML has the following simple specifications.

 %>STRING is added to the beginning of the input-port.

 Implicitly, < % is added to the end of the input-port.

 Note: These ideas are inspired by BRL ( http://brl.sourceforge.net/ ).

 To run EML, use -eml as command line option.

 e.g.
 python -m lizpop.run -eml yourfile.eml

 A simple example

 $ cat gcdlcm.eml
 < % (define numlist (map string->number *args*)) % >
 GCD of < % numlist % > is < %(apply gcd numlist)% >.
 LCM of < % numlist % > is < %(apply lcm numlist)% >.

 $ python -m lizpop.run -eml gcdlcm.eml -- 1533 37303 4307
 GCD of (1533 37303 4307) is 73.
 LCM of (1533 37303 4307) is 6602631.


 For more examples:

 please run (help load-eml) to see its help message.

 Note: `lizpop + apache2 + mod_wsgi`

 See the wsgi_sample/application.wsgi file included in this package.

Help function

 Lizpop has a help-function, it displays documentation for the given procedures or macros.

 Usage:

 (help var ...)

 (help-list regex-pattern)

 e.g.

 > (help invoke)
 Procedure: (invoke OBJ MESSAGE ARGS ... )
 Invokes the OBJ's method named MESSAGE with ARGS ...
 .........................................................


 However, for now, the help documentation is provided only for the Python-Interface related functions.

 For more info, run (help) and (help help-list).

 Note:
 I'm not good at English. So help messages may include some errors or unnatural expressions in English.

Restrictions

Hygienic macros are not supported.

 define-syntax syntax-rules, and let-syntax are not implemented.

 Instead, traditional(non-hygienic) macros can be used.
 => run (help define-macro)

Strings are not mutable.

 Lizpop strings are implemented as Python unicode-string objects which are immutable. so, string-set! and string-fill! don't work.

call/cc and dynamic-wind are only partially implemented.

 Lizpop does not support full continuation.

 Lizpop's call-with-current-continuation is upward-only and non-reentrant. So, it can be used for non-local-exit, but cannot be used for co-routines or backtracking.

Complex numbers and Fractional numbers are not supported.

null-environment and scheme-report-environment are not implemented.

 For more info, run (help eval).

last updated on:
April 6th, 2012, 12:37 GMT
price:
FREE!
developed by:
Tetsu Takaishi
license type:
BSD License 
category:
ROOT \ Programming \ Interpreters

FREE!

In a hurry? Add it to your Download Basket!

user rating

UNRATED
0.0/5
 

0/5

Add your review!

SUBMIT