|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
/*
* This file:
* http://anggtwu.net/luatree/luatree2.mac.html
* http://anggtwu.net/luatree/luatree2.mac
* (find-angg "luatree/luatree2.mac")
* Author: Eduardo Ochs <eduardoochs@gmail.com>
* See also:
* https://github.com/edrx/luatree
* https://github.com/edrx/luatree/#introduction
* http://angg.twu.net/eev-maxima.html#luatree
* http://angg.twu.net/e/maxima.e.html#luatree
* http://angg.twu.net/e/maxima.e.html#luatree-explanation
* (find-es "maxima" "luatree")
* (find-es "maxima" "luatree-explanation")
*
* (defun o () (interactive) (find-angg "luatree/luatree.mac"))
* (defun e () (interactive) (find-angg "luatree/luatree2.mac"))
* (defun l () (interactive) (find-angg "luatree/luatree.lisp"))
* (find-es "maxima" "mtree")
*
* Example:
*
* (%i1) load("~/luatree/luatree2.mac")$
* (%i2) luatree (a(b,c))$
* a__.
* | |
* b c
* (%i3) luatree (a[1][2](b,c))$
* ap_________.__.
* | | |
* [_]_____. b c
* | |
* [_]__. 2
* | |
* a 1
* (%i4) luatree (a[1][2](b,c)(d))$
* ap_______________.
* | |
* ap_________.__. d
* | | |
* [_]_____. b c
* | |
* [_]__. 2
* | |
* a 1
* (%i5)
*
* «.tests» (to "tests")
*/
luatreedir : pathname_directory(load_pathname); /* this directory */
load(concat(luatreedir, "luatree.lisp")); /* defines luatree_lua */
/* (find-angg ".maxima/maxima-init.mac" "mapconcat")
*/
intercalate(sep, strs) :=
block([strs2, rest],
strs2: makelist(concat(sep,strs[i]), i,2,length(strs)),
rest: apply('concat, strs2),
concat(strs[1], rest))$
mapconcat(f,a,sep) := intercalate(sep, map(f,a))$
mtree(o) :=
if atom(o) then concat("", o)
elseif subvarp(o) then append(["[_]", mtree(op(o))], map(mtree, args(o)))
elseif atom(op(o)) then append([ mtree(op(o))], map(mtree, args(o)))
else append(["ap", mtree(op(o))], map(mtree, args(o)));
mtreetoluatree1d(m) :=
if atom(m)
then concat("\"", m, "\"") /* TODO: add backslashes when needed */
else concat("{[0]=", mapconcat(mtreetoluatree1d, m, ", "), "}");
luatree1d(o) := mtreetoluatree1d(mtree(o));
luatree2d(o) := luatree_lua(luatree1d(o)); /* calls lua */
luatree : lambda([o], print(luatree2d(o), ""));
/*
* «tests» (to ".tests")
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
** (find-angg "luatree/luatree2.mac")
load ("~/luatree/luatree2.mac")$
luatree1d(a(b,c));
luatree2d(a(b,c));
luatree (a(b,c))$
mtree (a(b,c));
mtree (a[1][2](b,c));
luatree1d(a[1][2](b,c));
luatree (a[1][2](b,c))$
luatree (a[1][2](b,c)(d))$
*/
/*
* Local Variables:
* coding: utf-8-unix
* End:
*/