This file tracks the implementation of items from main/suggestions.md.
Status legend: [x] done, [~] in progress, [ ] pending
- Add macro core (Syntax, MacroEnv)
- Implement
syntax-rulesmatcher (expressions + lists, ellipses) - Add expander and
define-syntaxhandler - Wire expander into
parse_src - Register builtin Dasy macros (cond, doto, when, unless, let)
- Port thread macros (->, ->>) to Dasy macros (procedural)
- Port
dototo Dasy (procedural; returns(do ...)) - Port field/data access macros:
set-in,get-at - Add list + variadic variants:
get-at!,set-at,set-at! - Port
set-selfto Dasy (procedural; emits(do ...)of sets) - Flip order and deprecate Hy macros in docs
- Optional: add
syntax-case
- Keep canonical attribute/method forms:
(. obj field)and(. obj method args ...) - Consider removing
(. None method)special-case from core (kept for now for compatibility) - Document pipelines (
->,->>) anddotoas preferred idioms
- Parser already supports
:kw valat call sites; examples/tests continue to pass - Expand docs and tests to showcase call-site kwargs broadly
- Trim
ALIASESto spec-level essentials (removesetv, shiftquotehandling into parser) - Dispatch table simplification (follow-up cleanup)
- Keep Hy macros working alongside the new expander until feature parity is reached.
- Next focus: trim
ALIASESand consider removing the(. None ...)special-case after users migrate to Dasy-nativedoto/threads. Optional: simplify dispatch table. - After parity, update docs and examples to prefer Dasy-native macros, then retire Hy macros.
- Port
include!to Dasy (recursion guard; base-dir aware path resolution) - Port
interface!to Dasy (compiles target and injects(definterface ...))