Files
rose-ash/sx/sx/spec-introspect/spec-form-effects.sx
giles 4f02f82f4e HS parser: fix number+comparison keyword collision, eval-hs uses hs-compile
Parser: skip unit suffix when next ident is a comparison keyword
(starts, ends, contains, matches, is, does, in, precedes, follows).
Fixes "123 starts with '12'" returning "123starts" instead of true.

eval-hs: use hs-compile directly instead of hs-to-sx-from-source with
"return " prefix, which was causing the parser to consume the comparison
as a string suffix.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 11:29:01 +00:00

33 lines
854 B
Plaintext

(define spec-form-effects
(fn
(form)
(let
((result (list)) (found false))
(when
(> (len form) 3)
(for-each
(fn
(item)
(if
found
(when
(and (list? item) (empty? result))
(for-each
(fn
(eff)
(append!
result
(if
(= (type-of eff) "symbol")
(symbol-name eff)
(str eff))))
item)
(set! found false))
(when
(and
(= (type-of item) "keyword")
(= (keyword-name item) "effects"))
(set! found true))))
(slice form 2)))
result)))