lizpop

Scheme interpreter in Python
Download

lizpop Ranking & Summary

Advertisement

  • Rating:
  • License:
  • BSD License
  • Price:
  • FREE
  • Publisher Name:
  • Tetsu Takaishi

lizpop Tags


lizpop Description

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 installUsageTo run interactively: python -O -m lizpop.runTo run a Scheme script in a file: python -O -m lizpop.run yourfile.scmFor more info about command-line options: python -O -m lizpop.run -hFeaturesSubset 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 ( ). 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.RestrictionsHygienic 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).Product's homepage


lizpop Related Software