{ "info": { "author": "William S. Annis, Duncan McGreggor", "author_email": "duncan@adytum.us", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)", "Programming Language :: Lisp", "Programming Language :: Python", "Topic :: Software Development :: Interpreters" ], "description": "~~~~~~~~~\npyLisp-NG\n~~~~~~~~~\n\n.. contents::\n :depth: 1\n\n\n========\nFeatures\n========\n\n* A tiny Lisp dialect, easy to integrate into other Python projects.\n\n* Includes an interactive Lisp interpreter.\n\n* Expression introspection specifically designed for use in genetic\n programming.\n\n\n============\nIntroduction\n============\n\npyLisp-NG is an immediate descendant of PyLisp, which had its accidental birth\nas a result of William Annis' desire to build a CLIPS-like [#]_ syntax for a\nsimple expert system intended for the monitoring tool, Mom. As a result of Lisp\ninterest on the Python news group [#]_, William released the software and\nannounced it to the group [#]_.\n\nSeveral years later, the Evolver [#]_ and txEvolver [#]_ projects needed a\nfunctional programming language implementation in Python, as inspecting\nPython's AST was too much of a hassle. The author wanted to distribute,\nprocess, and manage evolutionary algorithms/programs across multiple remote\nTwisted servers, and manipulating permutations of partial programs was much\neasier to integrate with Twisted if the programs themselves could be evaluated\nand introspected easily with Python.\n\npyLisp-NG inherits PyLisp's idiosyncratic charaateristics. For example, the\nbooleans are true and false and it doesn't follow the convention that\neverything that isn't false is true (common to many Lisps). In fact, all\nbooleans in pyLisp-NG are based on fuzzy logic, so you can do trickier things.\nMacros are, quite strangely, first class objects in PyLisp which maybe novel to\nLisps [#]_::\n\n lisp> (setq foo 22)\n 22\n lisp> ((macro (x) `(setq ,x (+ ,x 1))) foo)\n 23\n\npyLisp-NG, like its predecessor, has no intent of becomming a full-fledged,\nrobust Lisp implementation. All progress is governed solely by the interest of\ncontributing developers; right now, that's strictly for use as a genetic\nprogramming tool.\n\n\n============\nInstallation\n============\n\npyLisp-NG is setuptools-friendly; you can install it with the following:\n\n $ easy_install pyLisp-NG\n\nYou can also get the full source code from Launchpad:\n\n $ bzr lp:pylisp-ng\n\nThe latter option greatly encouraged for interested users, as the repository\ncontains extra files that are not included in the ditribution tarballs (such as\nthe test runner and test utils).\n\n\n=====\nUsage\n=====\n\nTo use the interpretter from a full checkout, do this:\n\n $ cd \n $ ./bin/pylisp-ng\n\nIf you've installed with easy_install, and your Python scripts directory is in\nyour PATH, all you'll need to do is this:\n\n $ pylisp-ng\n\nAt this point, you'll be able to enter Lisp expressions::\n\n lisp> ((lambda (x) (* x x)) 2)\n 4\n lisp>\n\nYou can use the s-expression code from Python::\n\n >>> from pylispng import lisp\n >>> l = lisp.SExpression('((lambda (x) (* x x)) 2)')\n >>> str(l)\n '((lambda (x) (* x x)) 2)'\n >>> l.eval()\n 4\n\nBuilding an expression one symbol at a time or by adding chunks at a time::\n\n >>> l = lisp.SExpression()\n >>> l.append('+')\n >>> l.append('3')\n >>> l.append('5')\n >>> l.append('(* 3 3)')\n >>> str(l)\n '(+ 3 5 (* 3 3))'\n\nYou can examine various properties of the s-expression::\n\n >>> l.eval()\n 17\n >>> l.getDepth()\n 2\n >>> len(l)\n 4\n >>> l.getSize()\n 2\n\n\n\n\n==========\nKnown Bugs\n==========\n\nNone currently known.\n\n\n====\nTODO\n====\n\n* support testing .l files\n\n* support lisp interpreter tests in doctests?\n\n* add http://www.biostat.wisc.edu/~annis/creations/PyLisp/tests.txt to tests\n\n* split up monolithic lisp.py file into separate files\n\n* replace fragile interpreter that originally came with PyLisp with one based\n on the Python interpreter\n\n - graceful quit\n\n - command history\n\n - auto-completion\n\n* add support for getting expressions by index (and thus slicing as well)\n\n* add support for getting sub-expressions\n\n\n=======\nChanges\n=======\n\nFrom PyLisp 1.17 to 2.0.0 (pyLisp-NG)\n-------------------------------------\n\n* Added introspection code that's useful for genetic programming.\n\n* A couple small bug fixes and some code cleanup.\n\nFrom PyLisp 0.0 to 1.17\n-----------------------\n\nThere doesn't seem to be any history from which to extract code changes between\nprevious versions and 1.17.\n\n\n\n\n==========\nReferences\n==========\n\n.. [#] http://clipsrules.sourceforge.net/\n\n.. [#] http://mail.python.org/pipermail/python-list/2001-May/thread.html, search\n the page for \"lisp\"\n.. [#] http://mail.python.org/pipermail/python-list/2001-May/084087.html\n\n.. [#] https://launchpad.net/evolver\n\n.. [#] https://launchpad.net/txevolver\n\n.. [#] Taken from http://www.biostat.wisc.edu/~annis/creations/PyLisp/", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://launchpad.net/pylisp-ng", "keywords": null, "license": "LGPL 2.1", "maintainer": null, "maintainer_email": null, "name": "pyLisp-NG", "package_url": "https://pypi.org/project/pyLisp-NG/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pyLisp-NG/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://launchpad.net/pylisp-ng" }, "release_url": "https://pypi.org/project/pyLisp-NG/2.0.0/", "requires_dist": null, "requires_python": null, "summary": "A very simple implementation of Lisp in Python that is perfectly suitable for Python projects needing Lisp-like capabilities.", "version": "2.0.0" }, "last_serial": 796912, "releases": { "2.0.0": [ { "comment_text": "", "digests": { "md5": "e341de022b25121b49a68398a4f94c4c", "sha256": "f58d8381d666166c8f05105efad48e13c8605a8fc17338fd42cece84b7d91c15" }, "downloads": -1, "filename": "pyLisp_NG-2.0.0-py2.4.egg", "has_sig": false, "md5_digest": "e341de022b25121b49a68398a4f94c4c", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 53697, "upload_time": "2008-11-11T20:09:12", "url": "https://files.pythonhosted.org/packages/91/15/e2e3eba8a206b3db60c5a98daccfd0c30a14d0d9449bdc06ce24ce239c29/pyLisp_NG-2.0.0-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "4b6fb5e6b5879dabac2e7fbd5da7236d", "sha256": "36a063149df76a87098a3eaf139546498eaaa3b26835d276ba2d4086de1408ff" }, "downloads": -1, "filename": "pyLisp_NG-2.0.0-py2.5.egg", "has_sig": false, "md5_digest": "4b6fb5e6b5879dabac2e7fbd5da7236d", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 53015, "upload_time": "2008-11-11T20:09:06", "url": "https://files.pythonhosted.org/packages/6e/b6/e5ec8588b86f7b0cdb172bc5287f22cb0ed3acef52da9806921e7b063046/pyLisp_NG-2.0.0-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "84141318cde6bf4e4f10ac4a920531be", "sha256": "d14dee540c78d2b2a21ccfe09b1e9bab86cd060451545946555eb2ccbf9735d5" }, "downloads": -1, "filename": "pyLisp-NG-2.0.0.tar.gz", "has_sig": false, "md5_digest": "84141318cde6bf4e4f10ac4a920531be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21800, "upload_time": "2008-11-11T20:08:56", "url": "https://files.pythonhosted.org/packages/a2/88/00b7100011f7fde00ad590dc6c6e64aa936a0d9b7152f97597c96f105f2e/pyLisp-NG-2.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e341de022b25121b49a68398a4f94c4c", "sha256": "f58d8381d666166c8f05105efad48e13c8605a8fc17338fd42cece84b7d91c15" }, "downloads": -1, "filename": "pyLisp_NG-2.0.0-py2.4.egg", "has_sig": false, "md5_digest": "e341de022b25121b49a68398a4f94c4c", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 53697, "upload_time": "2008-11-11T20:09:12", "url": "https://files.pythonhosted.org/packages/91/15/e2e3eba8a206b3db60c5a98daccfd0c30a14d0d9449bdc06ce24ce239c29/pyLisp_NG-2.0.0-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "4b6fb5e6b5879dabac2e7fbd5da7236d", "sha256": "36a063149df76a87098a3eaf139546498eaaa3b26835d276ba2d4086de1408ff" }, "downloads": -1, "filename": "pyLisp_NG-2.0.0-py2.5.egg", "has_sig": false, "md5_digest": "4b6fb5e6b5879dabac2e7fbd5da7236d", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 53015, "upload_time": "2008-11-11T20:09:06", "url": "https://files.pythonhosted.org/packages/6e/b6/e5ec8588b86f7b0cdb172bc5287f22cb0ed3acef52da9806921e7b063046/pyLisp_NG-2.0.0-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "84141318cde6bf4e4f10ac4a920531be", "sha256": "d14dee540c78d2b2a21ccfe09b1e9bab86cd060451545946555eb2ccbf9735d5" }, "downloads": -1, "filename": "pyLisp-NG-2.0.0.tar.gz", "has_sig": false, "md5_digest": "84141318cde6bf4e4f10ac4a920531be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21800, "upload_time": "2008-11-11T20:08:56", "url": "https://files.pythonhosted.org/packages/a2/88/00b7100011f7fde00ad590dc6c6e64aa936a0d9b7152f97597c96f105f2e/pyLisp-NG-2.0.0.tar.gz" } ] }