WIP simplify

This commit is contained in:
2026-01-29 09:38:41 +01:00
parent f1f1b28b31
commit 4d0d837e14
11 changed files with 434 additions and 291 deletions

View File

@@ -34,7 +34,7 @@ pub const WORDS: &[Word] = &[
},
Word {
name: "dupn",
aliases: &[],
aliases: &["!"],
category: "Stack",
stack: "(a n -- a a ... a)",
desc: "Duplicate a onto stack n times",
@@ -482,19 +482,28 @@ pub const WORDS: &[Word] = &[
Word {
name: "cycle",
aliases: &[],
category: "Lists",
stack: "(..n n -- val)",
desc: "Cycle through n items by step",
example: "1 2 3 3 cycle",
category: "Selection",
stack: "(v1..vn n -- selected)",
desc: "Cycle through n items by step runs",
example: "60 64 67 3 cycle",
compile: Simple,
},
Word {
name: "pcycle",
aliases: &[],
category: "Lists",
stack: "(..n n -- val)",
desc: "Cycle through n items by pattern",
example: "1 2 3 3 pcycle",
category: "Selection",
stack: "(v1..vn n -- selected)",
desc: "Cycle through n items by pattern iteration",
example: "60 64 67 3 pcycle",
compile: Simple,
},
Word {
name: "tcycle",
aliases: &[],
category: "Selection",
stack: "(v1..vn n -- CycleList)",
desc: "Create cycle list for emit-time resolution",
example: "60 64 67 3 tcycle note",
compile: Simple,
},
Word {
@@ -799,41 +808,13 @@ pub const WORDS: &[Word] = &[
example: "1 4 chain",
compile: Simple,
},
// Lists
Word {
name: "[",
aliases: &["<", "<<"],
category: "Lists",
stack: "(-- marker)",
desc: "Start list",
example: "[ 1 2 3 ]",
compile: Simple,
},
Word {
name: "]",
name: "at",
aliases: &[],
category: "Lists",
stack: "(marker..n -- n)",
desc: "End list, push count",
example: "[ 1 2 3 ] => 3",
compile: Simple,
},
Word {
name: ">",
aliases: &[],
category: "Lists",
stack: "(marker..n -- val)",
desc: "End cycle list, pick by step",
example: "< 1 2 3 > => cycles through 1, 2, 3",
compile: Simple,
},
Word {
name: ">>",
aliases: &[],
category: "Lists",
stack: "(marker..n -- val)",
desc: "End pattern cycle list, pick by pattern",
example: "<< 1 2 3 >> => cycles through 1, 2, 3 per pattern",
category: "Time",
stack: "(list|n --)",
desc: "Set delta context for emit timing",
example: "[ 0 0.5 ] at kick s . => emits at 0 and 0.5 of step",
compile: Simple,
},
// Quotations
@@ -2050,6 +2031,7 @@ pub(super) fn simple_op(name: &str) -> Option<Op> {
"seed" => Op::Seed,
"cycle" => Op::Cycle,
"pcycle" => Op::PCycle,
"tcycle" => Op::TCycle,
"choose" => Op::Choose,
"every" => Op::Every,
"chance" => Op::ChanceExec,
@@ -2061,10 +2043,7 @@ pub(super) fn simple_op(name: &str) -> Option<Op> {
"!?" => Op::Unless,
"tempo!" => Op::SetTempo,
"speed!" => Op::SetSpeed,
"[" => Op::ListStart,
"]" => Op::ListEnd,
">" => Op::ListEndCycle,
">>" => Op::ListEndPCycle,
"at" => Op::At,
"adsr" => Op::Adsr,
"ad" => Op::Ad,
"apply" => Op::Apply,