roc/test/snapshots/let_polymorphism_expr.md
2025-11-23 01:22:01 -05:00

2 KiB

META

description=Let-polymorphism with empty list in expression
type=expr

SOURCE

match [] {
    empty => { ints: [1, 2, 3], strs: ["a", "b", "c"], empty: empty }
}

EXPECTED

NIL

PROBLEMS

NIL

TOKENS

KwMatch,OpenSquare,CloseSquare,OpenCurly,
LowerIdent,OpFatArrow,OpenCurly,LowerIdent,OpColon,OpenSquare,Int,Comma,Int,Comma,Int,CloseSquare,Comma,LowerIdent,OpColon,OpenSquare,StringStart,StringPart,StringEnd,Comma,StringStart,StringPart,StringEnd,Comma,StringStart,StringPart,StringEnd,CloseSquare,Comma,LowerIdent,OpColon,LowerIdent,CloseCurly,
CloseCurly,
EndOfFile,

PARSE

(e-match
	(e-list)
	(branches
		(branch
			(p-ident (raw "empty"))
			(e-record
				(field (field "ints")
					(e-list
						(e-int (raw "1"))
						(e-int (raw "2"))
						(e-int (raw "3"))))
				(field (field "strs")
					(e-list
						(e-string
							(e-string-part (raw "a")))
						(e-string
							(e-string-part (raw "b")))
						(e-string
							(e-string-part (raw "c")))))
				(field (field "empty")
					(e-ident (raw "empty")))))))

FORMATTED

match [] {
	empty => { ints: [1, 2, 3], strs: ["a", "b", "c"], empty: empty }
}

CANONICALIZE

(e-match
	(match
		(cond
			(e-empty_list))
		(branches
			(branch
				(patterns
					(pattern (degenerate false)
						(p-assign (ident "empty"))))
				(value
					(e-record
						(fields
							(field (name "ints")
								(e-list
									(elems
										(e-num (value "1"))
										(e-num (value "2"))
										(e-num (value "3")))))
							(field (name "strs")
								(e-list
									(elems
										(e-string
											(e-literal (string "a")))
										(e-string
											(e-literal (string "b")))
										(e-string
											(e-literal (string "c"))))))
							(field (name "empty")
								(e-lookup-local
									(p-assign (ident "empty")))))))))))

TYPES

(expr (type "{ empty: List(_a), ints: List(b), strs: List(Str) } where [b.from_numeral : Numeral -> Try(b, [InvalidNumeral(Str)])]"))