site/contents/reference-stack.md
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
----- content-type: "page" title: "stack Module" ----- {@ _defs_.md || 0 @} {#op||clear||{{any}}||{{none}}|| Empties the stack.#} {#op||cleave||{{a1}} ({{q}}{{0p}})||{{a0p}}|| > Applies each quotation contained in the first element to the second element {{a1}}. > > %sidebar% > > Example > > > > The following program leaves 2 on the stack: > > > > `(1 2 3) ((sum) (size)) stack.cleave /`#} {#op||cons||{{a1}} ({{a0p}})||({{a1}} {{a0p}})|| Prepends {{a1}} to the quotation on top of the stack.#} {#op||dip||{{a1}} ({{a2}})||{{a0p}} {{a1}}|| Removes the first and second element from the stack, dequotes the first element, and restores the second element.#} {#op||dup||{{a1}}||{{a1}} {{a1}}|| Duplicates the first element on the stack.#} {#op||get||{{none}}||({{a0p}})|| Puts a quotation containing the contents of the stack on the stack.#} {#op||keep||{{a1}} {{q}}||{{a0p}} {{a1}}|| > Removes the first element from the stack, dequotes it, and restores the second element. > > %sidebar% > > Example > > > > The following program leaves `5 3` on the stack: > > > > `2 3 '+ stack.keep` #} {#op||nip||{{a1}} {{a2}}||{{a2}}|| Removes the second element from the stack.#} {#op||over||{{a1}} {{a2}}||{{a1}} {{a2}} {{a1}}|| Pushes a copy of the second element on top of the stack.#} {#op||pick||{{a1}} {{a2}} {{a3}}||{{a1}} {{a2}} {{a3}} {{a1}}|| Pushes a copy of the third element on top of the stack.#} {#op||pop||{{any}}||{{none}}|| Removes the first element from the stack.#} {#op||rolldown||{{a1}} {{a2}} {{a3}}||{{a2}} {{a3}} {{a1}}|| Moves the third element in first position, the second in third position and the the first in second position.#} {#op||rollup||{{a1}} {{a2}} {{a3}}||{{a3}} {{a2}} {{a1}}|| Moves the third and second element into second and third position and moves the first element into third position.#} {#op||set||{{q}}||{{a0p}}|| Substitute the existing stack with the contents of {{q}}.#} {#op||sip||{{q1}} {{q2}}||{{a0p}} {{q1}}|| Saves the {{q1}}, dequotes {{q2}}, and restores {{q1}}.#} {#op||spread||{{a0p}} ({{q}}{{0p}})||{{a0p}}|| > Applies each quotation contained in the first element to each subsequent corresponding element. > > %sidebar% > > Example > > > > The following program leaves `(1 4)` on the stack: > > > > `(1 2) (3 4) ((0 get) (1 get)) stack.spread` #} {#op||swap||{{a1}} {{a2}}||{{a2}} {{a1}}|| Swaps the first two elements on the stack. #} {#op||swons||({{a0p}}) {{a1}}||({{a1}} {{a0p}})|| Prepends {{a1}} to the quotation that follows it.#} |