Files
rose-ash/lib/haskell/scoreboard.json
giles 544e79f533
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 18s
haskell: fix string ↔ [Char] equality — palindrome 12/12, conformance 34/34 (269/269)
Haskell strings are [Char]. Calling reverse / head / length on a SX raw
string transparently produces a cons-list of char codes (via hk-str-head /
hk-str-tail in runtime.sx), but (==) then compared the original raw string
against the char-code cons-list and always returned False — so
"racecar" == reverse "racecar" was False.

Added hk-try-charlist-to-string and hk-normalize-for-eq in eval.sx; routed
== and /= through hk-normalize-for-eq so a string compares equal to any
cons-list whose elements are valid Unicode code points spelling the same
characters, and "[]" ↔ "".

palindrome.hs lifts from 9/12 → 12/12; conformance 33/34 → 34/34 programs,
266/269 → 269/269 tests.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 20:35:28 +00:00

42 lines
1.4 KiB
JSON

{
"date": "2026-05-07",
"total_pass": 269,
"total_fail": 0,
"programs": {
"fib": {"pass": 2, "fail": 0},
"sieve": {"pass": 2, "fail": 0},
"quicksort": {"pass": 5, "fail": 0},
"nqueens": {"pass": 2, "fail": 0},
"calculator": {"pass": 5, "fail": 0},
"collatz": {"pass": 11, "fail": 0},
"palindrome": {"pass": 12, "fail": 0},
"maybe": {"pass": 12, "fail": 0},
"fizzbuzz": {"pass": 12, "fail": 0},
"anagram": {"pass": 9, "fail": 0},
"roman": {"pass": 14, "fail": 0},
"binary": {"pass": 12, "fail": 0},
"either": {"pass": 12, "fail": 0},
"primes": {"pass": 12, "fail": 0},
"zipwith": {"pass": 9, "fail": 0},
"matrix": {"pass": 8, "fail": 0},
"wordcount": {"pass": 10, "fail": 0},
"powers": {"pass": 14, "fail": 0},
"caesar": {"pass": 8, "fail": 0},
"runlength-str": {"pass": 9, "fail": 0},
"showadt": {"pass": 5, "fail": 0},
"showio": {"pass": 5, "fail": 0},
"partial": {"pass": 7, "fail": 0},
"statistics": {"pass": 5, "fail": 0},
"newton": {"pass": 5, "fail": 0},
"wordfreq": {"pass": 7, "fail": 0},
"mapgraph": {"pass": 6, "fail": 0},
"uniquewords": {"pass": 4, "fail": 0},
"setops": {"pass": 8, "fail": 0},
"shapes": {"pass": 5, "fail": 0},
"person": {"pass": 7, "fail": 0},
"config": {"pass": 10, "fail": 0},
"counter": {"pass": 7, "fail": 0},
"accumulate": {"pass": 8, "fail": 0}
}
}