1. What is Keikaku? A dynamic, interpreted programming language with a plan-themed keyword vocabulary, first-class generators (with delegation and bidirectional communication), async/await, and structured error handling. The name means “plan” in Japanese.

  2. How do I run Keikaku code? Launch the REPL with keikaku, or execute a source file with keikaku script.kei (.kei is the file extension).

  3. How do I declare a variable? Use designate name = value for explicit declaration, or name := value for quick assignment.

  4. How do I print output? Use declare(...), e.g. declare("Count:", count).

  5. What replaces if/else? foresee for the first branch, alternate for additional conditions, and otherwise for the default.

  6. What loops does it have? One keyword, cycle, in three forms: cycle while cond, cycle through collection as item, and cycle from a to b as i.

  7. How are functions and generators defined? Functions use protocol; generators use sequence. A protocol with multiple yields behaves as a generator.

  8. How do I advance a generator? Call proceed(gen); execution runs to the next yield and pauses.

  9. What is delegate? Yield-from: delegate other() yields all values from another generator or list inline.

  10. How does a generator receive values from the caller? With receive() inside the generator and transmit(gen, value) from the caller; the generator can yield a response computed from the received value.

  11. Can I inject an exception into a running generator? Yes: disrupt(gen, error) raises it at the generator’s suspension point, where an in-generator attempt/recover can catch it and continue.

  12. How do generator expressions work? Inline lazy sequences in parentheses: (x * x for x through list), with an optional filter (x for x through list where cond).

  13. How does async work? Define async protocol (or async sequence) functions, use await to pause until a promise resolves or a generator yields, and construct resolved promises with resolve(value).

  14. What scheduling primitives exist? defer(delay, fn, args...) schedules a call for later, and sleep(ms) pauses execution for a number of milliseconds.

  15. How do I handle errors? Wrap risky code in attempt: and handle failures in recover error:; the error is bound in the recover block.

  16. What is the anomaly block? A block that executes regardless of standard checks, intended for intentional deviations and prototyping.

  17. What data types are supported? Integers, floats, strings, booleans, lists ([1,2,3]), and dictionaries ({key: val}).

  18. What built-in functions are available? measure (length), span(n) (range list), text / number (conversions), classify (type name), plus declare, proceed, transmit, receive, resolve, defer, and sleep.

  19. How is Keikaku implemented? An ANTLR grammar front end with a C interpreter core, built via CMake/Makefile, with Shell packaging scripts and Python tooling.

  20. How do I install it? Arch: makepkg -si in packaging/arch. Debian/Ubuntu/Kali: packaging/debian/install.sh. Windows: cross-compile with packaging/windows/build_exe.sh (needs mingw-w64-gcc). Any OS: cmake .. && make && sudo make install.