haskell: 13 new program suites + scoreboard 156/156 (775 tests)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 24s

collatz, palindrome, maybe, fizzbuzz, anagram, roman, binary, either,
primes, zipwith, matrix, wordcount, powers — all 18/18 programs green.
conformance.sh PROGRAMS array updated; scoreboard.md regenerated.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-06 17:02:02 +00:00
parent f86d07401d
commit 09d65d2d7b
17 changed files with 1087 additions and 9 deletions

View File

@@ -0,0 +1,74 @@
;; zipwith.hs — zip, zipWith, unzip operations.
(define
hk-prog-val
(fn
(src name)
(hk-deep-force (get (hk-eval-program (hk-core src)) name))))
(define
hk-as-list
(fn
(xs)
(cond
((and (list? xs) (= (first xs) "[]")) (list))
((and (list? xs) (= (first xs) ":"))
(cons (nth xs 1) (hk-as-list (nth xs 2))))
(:else xs))))
(define
hk-zip-src
"addPair (x, y) = x + y\npairSum xs ys = map addPair (zip xs ys)\n\nscaleBy k xs = map (\\x -> x * k) xs\n\ndotProduct xs ys = sum (zipWith (*) xs ys)\n\nzipIndex xs = zip [0..length xs - 1] xs\n")
(hk-test
"zip two lists"
(hk-as-list (hk-prog-val (str hk-zip-src "r = zip [1,2,3] [4,5,6]\n") "r"))
(list (list "Tuple" 1 4) (list "Tuple" 2 5) (list "Tuple" 3 6)))
(hk-test
"zip unequal lengths — shorter wins"
(hk-as-list (hk-prog-val (str hk-zip-src "r = zip [1,2] [10,20,30]\n") "r"))
(list (list "Tuple" 1 10) (list "Tuple" 2 20)))
(hk-test
"zipWith (+)"
(hk-as-list
(hk-prog-val (str hk-zip-src "r = zipWith (+) [1,2,3] [10,20,30]\n") "r"))
(list 11 22 33))
(hk-test
"zipWith (*)"
(hk-as-list
(hk-prog-val (str hk-zip-src "r = zipWith (*) [2,3,4] [10,10,10]\n") "r"))
(list 20 30 40))
(hk-test
"dotProduct [1,2,3] [4,5,6] = 32"
(hk-prog-val (str hk-zip-src "r = dotProduct [1,2,3] [4,5,6]\n") "r")
32)
(hk-test
"dotProduct unit vectors = 0"
(hk-prog-val (str hk-zip-src "r = dotProduct [1,0] [0,1]\n") "r")
0)
(hk-test
"pairSum adds element-wise"
(hk-as-list
(hk-prog-val (str hk-zip-src "r = pairSum [1,2,3] [4,5,6]\n") "r"))
(list 5 7 9))
(hk-test
"unzip separates pairs"
(hk-prog-val (str hk-zip-src "r = unzip [(1,2),(3,4),(5,6)]\n") "r")
(list
"Tuple"
(list ":" 1 (list ":" 3 (list ":" 5 (list "[]"))))
(list ":" 2 (list ":" 4 (list ":" 6 (list "[]"))))))
(hk-test
"zip empty = []"
(hk-as-list (hk-prog-val (str hk-zip-src "r = zip [] [1,2,3]\n") "r"))
(list))
{:fails hk-test-fails :pass hk-test-pass :fail hk-test-fail}