pyLisp-NG projekt är en omedelbar ättling till PyLisp, som hade sin oavsiktlig födelse som en följd av William Annis önskan att bygga en CLIPS-liknande syntax för en enkel expertsystem avsett för övervakningsverktyg. & Nbsp; Som en Resultatet av Lisp ränta på Python nyhetsgrupp, släppte William program och meddelade det till gruppen.
Flera år senare, Evolver och txEvolver projekt behövs ett funktionellt genomförande programmeringsspråk i Python, som inspekterar Pythons AST var för mycket av ett besvär. Författaren ville distribuera, bearbeta och hantera evolutionära algoritmer / program över flera fjärr Twisted servrar, och manipulera permutationer av partiella program var mycket lättare att integrera med Twisted om programmen själva kan utvärderas och introspected enkelt med Python.
pyLisp-NG ärver PyLisp s idiosynkratiska charaateristics. Till exempel booleska är sant och falskt och det följer inte konventionen att allt som inte är falskt är sant (gemensamt för många Lisps). I själva verket är alla booleska i pyLisp-NG baserad på fuzzy logic, så att du kan göra svårare saker. Makron är ganska konstigt, första klassens objekt i PyLisp som kanske nya till Lisps:
lisp> (setq foo 22)
22
Lisp> ((makro (x) '(setq, x (+ x 1))) foo)
23
pyLisp-NG, liksom sin föregångare, har ingen avsikt att becomming en fullfjädrad, robust Lisp genomförande. Alla framsteg enbart styrs av intresse att bidra utvecklare; just nu, det är endast för användning som en genetisk programmeringsverktyg.
Installation:
pyLisp-NG är setuptools vänlig; du kan installera det med följande:
& Nbsp; USD easy_install pyLisp-NG
Du kan också få full källkod från Launchpad:
& Nbsp; $ bzr lp: pylisp-ng
Det senare alternativet uppmuntras kraftigt för intresserade användare, som förvaret innehåller extra filer som inte ingår i ditribution tarbollar (t.ex. test löpare och test utils).
Användning:
Om du vill använda interpretter från en fullständig utcheckning, gör så här:
& Nbsp; $ cd
Om du har installerat med easy_install och din Python-skript katalogen finns i din PATH, är allt du behöver för att göra detta:
& Nbsp; USD pylisp-ng
Vid det här laget, kommer du att kunna komma in Lisp uttryck:
lisp> ((lambda (X) (* x x)) 2)
4
lisp>
Du kan använda s-uttryck kod från Python:
>>> Från pylispng import lisp
>>> L = lisp.SExpression ('((lambda (X) (* xx) 2))')
>>> Str (l)
'((Lambda (X) (* x x)) 2) "
>>> L.eval ()
4
Att bygga ett uttryck en symbol i taget eller genom tillsats av bitar i taget:
>>> L = lisp.SExpression ()
>>> L.append ("+")
>>> l.append ("3")
>>> l.append ('5')
>>> L.append ("(* 3 3))
>>> Str (l)
'(+ 3 5 (* 3 3))'
Du kan undersöka olika egenskaper hos s-uttryck:
>>> L.eval ()
17
>>> L.getDepth ()
2
>>> Len (l)
4
>>> L.getSize ()
2
Egenskaper .
- En liten Lisp dialekt, lätt att integrera i andra Python projekt
- Inkluderar en interaktiv Lisp tolk.
- Expression introspektion speciellt utformad för att användas i genetisk programmering.
Vad är nytt i den här versionen.
- Inkom introspektion kod som är användbar för genetisk programmering
- Ett par små buggfixar och en del kod sanering.
Krav :
- Python
Kommentarer hittades inte