def eq
import bend-toon-codec@0.1.0.0/src/json.bend as Jsonimport Base
100# JSON-model equality (spec section 2): same shape, same ordered keys, numbers
101# equal by value (`1.0` equals `1`), strings equal by code points.
102def eq(+a: Json, +b: Json) -> Bool:
103 match a b:
104 case JArr{x} JArr{y}:
105 eq(x, y)
106 case JObj{x} JObj{y}:
107 eq(x, y)
108 case JCons{h, t} JCons{h2, t2}:
109 eq(h, h2) && eq(t, t2)
110 case JField{k, v, t} JField{k2, v2, t2}:
111 String.eq(k, k2) && eq(v, v2) && eq(t, t2)
112 case _ _:
113 prim.eq(a, b)