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>
15 lines
455 B
Plaintext
15 lines
455 B
Plaintext
(define spec-form-name
|
|
(fn
|
|
(form)
|
|
(if
|
|
(< (len form) 2)
|
|
nil
|
|
(let
|
|
((head (symbol-name (first form))) (name-part (nth form 1)))
|
|
(cond
|
|
(= head "define")
|
|
(if (= (type-of name-part) "symbol") (symbol-name name-part) nil)
|
|
(or (= head "defcomp") (= head "defisland") (= head "defmacro"))
|
|
(if (= (type-of name-part) "symbol") (symbol-name name-part) nil)
|
|
:else nil)))))
|