def Meaning

bend-schema-lib@0.4.1.0 · core.bend:1427

import bend-schema-lib@0.4.1.0/core.bend as Core
import Base

1427def Meaning(s: Schema) -> Data:
1428  match s:
1429    case SNat{}:
1430      Nat
1431    case SNatIn{lo, hi}:
1432      Nat
1433    case SStr{}:
1434      String
1435    case SStrLen{lo, hi, s2}:
1436      Meaning(s2)
1437    case SListLen{lo, hi, s2}:
1438      Meaning(s2)
1439    case SOpt{i}:
1440      Maybe<&2, Meaning(i)>
1441    case SOptional{i}:
1442      Maybe<&2, Meaning(i)>
1443    case SList{e}:
1444      List<&2, Meaning(e)>
1445    case SField{n, fs, rest}:
1446      Both<Meaning(fs), Meaning(rest)>
1447    case SEnd{}:
1448      Unit
1449    case SRule{s2, tag}:
1450      Meaning(s2)
1451    case SStrict{s2}:
1452      Meaning(s2)
1453    case STagged{k, n, cs, rest}:
1454      Either<&2, &2, Meaning(cs), Meaning(rest)>
1455    case STagEnd{k}:
1456      Empty
1457    case SBool{}:
1458      Bool
1459    case STrue{}:
1460      Unit
1461    case SEnum{names}:
1462      String
1463    case SVariant{n, vs, rest}:
1464      Either<&2, &2, Meaning(vs), Meaning(rest)>
1465    case SVEnd{}:
1466      Empty
1467    case STuple{ts, rest}:
1468      Both<Meaning(ts), Meaning(rest)>
1469    case STEnd{}:
1470      Unit
1471    case SJson{}:
1472      Json
1473    case SInt{}:
1474      Int
1475    case SIntIn{lo, hi}:
1476      Int
1477    case SEither{l, r}:
1478      Either<&2, &2, Meaning(l), Meaning(r)>

Uses (12)

Used by (4)