def repl(prompt=u'haiku> '): "A read-eval-print loop for haiku." canonical = CanonicalExpressionPickler() simple = SimpleExpressionPickler() interpreter = BaseInterpreter(pickler=simple, environment=globalEnvironment) while True: try: expression = interpreter.read(raw_input(prompt)) except EOFError: sys.stdout.write('\n'); return 0 except KeyboardInterrupt: sys.stdout.write('\n'); continue except Exception, e: traceback.print_exc(); continue try: result = interpreter.evaluate(expression) print u"INPUT: %s" % canonical.dumps(*expression).encode('string_escape') print u"DEBUG: %s" % Unicode(expression) print u"RESULT: %s" % Unicode(result) print u"OUTPUT: %s" % simple.dumps(result)[1:-1] except Exception, e: traceback.print_exc(); continue
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE AND # DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # ===----------------------------------------------------------------------=== "" from haiku.builtin import builtinEnvironment from haiku.pickle import CanonicalExpressionPickler from haiku.types import * __all__ = [] # ===----------------------------------------------------------------------=== pickler = CanonicalExpressionPickler() _pickle, _unpickle = map(Symbol, 'pickle unpickle'.split()) pickle = Procedure( params = Tuple([(1, AlphaCompatible)]), defaults = Tuple(), ellipsis = False, environment = builtinEnvironment, body = lambda eval_,env:pickler.dumps(env[1]), ) unpickle = Procedure( params = Tuple([(1, SymbolCompatible)]), defaults = Tuple(),