haskell: full patterns — as/lazy/negative/infix + lambda & let pat LHS (+18 tests, 138/138)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled

This commit is contained in:
2026-04-24 18:34:47 +00:00
parent 36234f0132
commit 58dbbc5d8b
6 changed files with 387 additions and 36 deletions

View File

@@ -147,20 +147,20 @@
(hk-test
"lambda single param"
(hk-parse "\\x -> x")
(list :lambda (list "x") (list :var "x")))
(list :lambda (list (list :p-var "x")) (list :var "x")))
(hk-test
"lambda multi-param"
(hk-parse "\\x y -> x + y")
(list
:lambda
(list "x" "y")
(list (list :p-var "x") (list :p-var "y"))
(list :op "+" (list :var "x") (list :var "y"))))
(hk-test
"lambda body is full expression"
(hk-parse "\\f -> f 1 + f 2")
(list
:lambda
(list "f")
(list (list :p-var "f"))
(list
:op
"+"
@@ -187,7 +187,7 @@
(hk-parse "let x = 1 in x")
(list
:let
(list (list :bind "x" (list :int 1)))
(list (list :bind (list :p-var "x") (list :int 1)))
(list :var "x")))
(hk-test
"let two bindings (multi-line)"
@@ -195,8 +195,8 @@
(list
:let
(list
(list :bind "x" (list :int 1))
(list :bind "y" (list :int 2)))
(list :bind (list :p-var "x") (list :int 1))
(list :bind (list :p-var "y") (list :int 2)))
(list :op "+" (list :var "x") (list :var "y"))))
(hk-test
"let with explicit braces"
@@ -204,8 +204,8 @@
(list
:let
(list
(list :bind "x" (list :int 1))
(list :bind "y" (list :int 2)))
(list :bind (list :p-var "x") (list :int 1))
(list :bind (list :p-var "y") (list :int 2)))
(list :op "+" (list :var "x") (list :var "y"))))
;; ── 12. Mixed / nesting ──
@@ -226,7 +226,7 @@
:app
(list
:lambda
(list "x")
(list (list :p-var "x"))
(list :op "+" (list :var "x") (list :int 1)))
(list :int 5)))
(hk-test
@@ -234,7 +234,7 @@
(hk-parse "\\n -> if n == 0 then 1 else n")
(list
:lambda
(list "n")
(list (list :p-var "n"))
(list
:if
(list :op "==" (list :var "n") (list :int 0))