Direct contributors:
- Juha Jeronen (@Technologicat) - original author
- @aisha-w - documentation improvements
Design inspiration from the internet:
Dynamic assignment based on StackOverflow answer by Jason Orendorff (2010), used under CC-BY-SA. The threading support is original to our version.
Core idea of lispylet
based on StackOverflow answer by divs1210 (2017), used under the MIT license.
The trampoline implementation of unpythonic.tco
takes its remarkably clean and simple approach from recur.tco
in fn.py. Our main improvements are a cleaner syntax for the client code, and the addition of the FP looping constructs. Another important source of inspiration was tco by Thomas Baruchel, for thinking about the possibilities of TCO in Python.
Core idea of view
based on StackOverflow answer by Mathieu Caroff (2018), used under the MIT license. Our additions include support for sequences with changing length, write support, iteration based on __iter__
, in-place reverse, and the abstract base classes.
Recursion cycle breaker fix
based on original idea and implementation by Matthew Might and Per Vognsen (the latter linked from the Python implementation of the Brzozowski-derivative based language recognizer). Matthew Might's original Racket code is under The CRAPL; the license for Per Vognsen's Python implementation is not specified, but the file is publicly linked from Matthew Might's blog post. Our version is a redesign with kwargs support, thread safety, and TCO support.
Conditions system (restarts
, handlers
) based on studying the implementation of python-cl-conditions by Alexander Artemenko (@svetlyak40wt), which is released under the 2-clause BSD license.
PTYSocketProxy
based on StackOverflow answer by gowenfawr.
Asynchronous exception injector (async_raise
) is "one of the dirtiest hacks ever seen", by Federico Ficarelli for Python 3.4), and originally by LIU Wei for Python 2.x.