CS 342 equations for APL constructors * indx (shape (indx n)) = n, for n >= 0 ([] (indx n) i) = i, for 1 <= i <= n * cat (cat m1 m2) = (cat (ravel m1) (ravel m2)) (shape (cat m1 m2)) = (+ (shape (ravel m1)) (shape (ravel m2))) ;;changed if 1 <= i <= (shape (ravel m1)), then ([] (cat m1 m2) i) = ([] (ravel m1) i) if (shape (ravel m2))+1 <= i <= (shape (cat m1 m2)), then ([] (cat m1 m2) i) = ([] (ravel m2) (- i (shape (ravel m1))))) * compress (shape (compress lv value)) = (+/ lv), for logical vectors lv ;;changed (compress (restruct (size value) '(1)) value) = value where (size A) = ([] (shape A) 1) ;;changed ([] (compress lv value) i) = ?? (in terms of [], lv, value, i) * restruct (restruct (shape m) (ravel m)) = m (shape (restruct v e)) = v (ravel (restruct v e)) = e, if (shape e) >= (*/ v) ([] (ravel (restruct v e)) i) = ([] (cat ([] e (shape e)) e) (+ 1 (mod i (shape e)))) ;;changed for all 1 <= i <= (*/ v) * trans (shape (trans A)) = (reverse (shape A)) ;;changed where (reverse A) =([] A (+ 1 (- (size A) (indx (size A)))))) and (size A) = ([] (shape A) 1) ([] ([] (trans A) j) i) = ([] ([] A i) j)