Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 53s
Tokenizer (lowercase, strip punctuation, positions) and a sorted assoc-list inverted index [(Term,[(DocId,[Pos])])] with indexDoc/deleteDoc/lookupTerm/ docFreq/allTerms. Search lib is haskell-on-sx source assembled into search/src; tests reuse hk-test counters via a search-eval helper. conformance.sh models lib/haskell. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
30 lines
991 B
Plaintext
30 lines
991 B
Plaintext
;; search test helpers — convert forced haskell values to plain SX and run
|
|
;; programs built on top of search/src. Reuses hk-test / counters from
|
|
;; lib/haskell/testlib.sx (preloaded by the conformance config).
|
|
|
|
;; Recursively turn a forced HK value into plain SX:
|
|
;; cons-list -> SX list, Tuple -> SX list, leaves unchanged.
|
|
(define
|
|
search-hk->sx
|
|
(fn
|
|
(v)
|
|
(cond
|
|
((and (list? v) (not (empty? v)) (= (first v) "[]")) (list))
|
|
((and (list? v) (not (empty? v)) (= (first v) ":"))
|
|
(cons
|
|
(search-hk->sx (nth v 1))
|
|
(search-hk->sx (nth v 2))))
|
|
((and (list? v) (not (empty? v)) (= (first v) "Tuple"))
|
|
(map search-hk->sx (rest v)))
|
|
(:else v))))
|
|
|
|
;; Evaluate `extra` (extra top-level Haskell bindings) on top of search/src
|
|
;; and return binding `name` as plain SX.
|
|
(define
|
|
search-eval
|
|
(fn
|
|
(extra name)
|
|
(search-hk->sx
|
|
(hk-deep-force
|
|
(get (hk-eval-program (hk-core (str search/src extra))) name)))))
|