Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
/*
 * This file:
 *   http://anggtwu.net/myqdraw/myqdraw-core.mac.html
 *   http://anggtwu.net/myqdraw/myqdraw-core.mac
 *          (find-angg "myqdraw/myqdraw-core.mac")
 * Author: Eduardo Ochs <eduardoochs@gmail.com>
 * License: Public Domain
 * Version: 2024nov05
 *
 * This is the core of all my attempts to extend qdraw - it is the
 * part that hasn't changed from myqdraw1 to myqdraw3, except for
 * minimal clean-ups. It is explained here:
 *
 *    http://anggtwu.net/eev-qdraw.html#the-core
 *    http://anggtwu.net/eev-qdraw.html#eight-functions
 *
 * The functions of the cube that end with "v"
 *
 *   qdraw ------ myqdraw
 *      | \         |   \
 *      | qdraw1    |  myqdraw1
 *      |   |       |      |
 *   qdrawv |---- myqdrawv |
 *        \ |          \   |
 *        qdraw1v ---- myqdraw1v
 *
 * use `concatvstrings'.
 *
 * «.mapconcat»		(to "mapconcat")
 * «.myqdraw»		(to "myqdraw")
 * «.eight-functions»	(to "eight-functions")
 * «.myapply»		(to "myapply")
*/


/* «mapconcat»  (to ".mapconcat")
 * (find-es "maxima" "mapconcat")
 * (find-maximanode "Introduction to Strings")
 * (find-maximanode "Introduction to Strings" "Embedded line termination")
*/
newline : "
";
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))$
concatvstrings (L) := mapconcat('string, L, newline);
/*
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("myqdraw-core.mac");
intercalate(",", ["a", "b", "c"]);
intercalate("_err_", []);            "<- This gives an error"$
mapconcat(tex1, [x/y, z*w], " & ");
concatvstrings ([x/y, z*w]);
                [x/y, z*w];

*/



/* «myqdraw»          (to ".myqdraw")
 * «eight-functions»  (to ".eight-functions")
 * (find-angg ".maxima/maxima-init.mac" "load_qdraw")
 * (find-myqdrawfile "qdraw.mac")
 * (find-myqdrawfile "qdraw.mac" "qdraw1" "produces drlist")
 * (find-myqdrawfile "qdraw.mac" "qdraw calls qdraw1 then passes drlist")
*/
qdraw1v     ([qargs]) := concatvstrings(apply('qdraw1, qargs));
qdrawv      ([qargs]) := concatvstrings               (qargs);
myqdraw_prep([qargs]) := flatten([qargs]);
myqdraw     ([qargs]) := apply('qdraw,   myqdraw_prep(qargs));
myqdraw1    ([qargs]) := apply('qdraw1,  myqdraw_prep(qargs));
myqdraw1v   ([qargs]) := apply('qdraw1v, myqdraw_prep(qargs));
myqdrawv    ([qargs]) := apply('qdrawv,  myqdraw_prep(qargs));
/*
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
** (find-myqdraw "myqdraw3.mac")
load       ("~/MAXIMA/myqdraw3.mac");
[p1, p2, p3] : [pts([[1,1]]), pts([[2,2]]), pts([[3,3]])];
  qdraw1v (p1,  p2, p3);
myqdraw1v([p1, [p2, p3]]);
myqdrawv ([p1, [p2, p3]]);
myqdraw  ([p1, [p2, p3]]);
  qdraw   (p1,  p2, p3);

*/


/*
 * «myapply»  (to ".myapply")
 * See: (find-es "maxima" "myapply")
*/
butlast       (L)  := firstn(L, length(L)-1);
expandlast    (L)  := append(butlast(L), last(L));
flattenlast   (L)  := append(butlast(L), flatten([last(L)]));
myapply    (f,[L]) := apply(f, expandlast(L));
myapply1   (f, L ) := apply(f, expandlast(L));
myapply1_fl(f, L ) := apply(f, flattenlast(L));
myapply_fl (f,[L]) := apply(f, flattenlast(L));
/*
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("myqdraw-core.mac");
butlast    ([1,2,3,4,[[5,6],[7,8]]]);
expandlast ([1,2,3,4,[[5,6],[7,8]]]);
flattenlast([1,2,3,4,[[5,6],[7,8]]]);

apply      (foo, [[x0,y0],[x1,y1]]);
myapply    (foo,  [x0,y0],[x1,y1], [[2,3],[4,5]] );
myapply1   (foo, [[x0,y0],[x1,y1], [[2,3],[4,5]]]);
myapply1_fl(foo, [[x0,y0],[x1,y1], [[2,3],[4,5]]]);

*/




/*
 * Local Variables:
 * coding:  utf-8-unix
 * End:
*/