Builtin
int_rel
int_rel{i:int, base:int, r{seq:int, ss:str}}
A relation generator.
Can convert integer i into digits (ss) and vice-versa.
If base is provided it is used to select the kind of digits otherwise base 2 (bits) is used.
{seq:int} is used to sequence the digits from most significant on the left (largest seq) to least on the right (smallest seq).
Examples
split into bits
int_rel(i:=42)
split into base 16 hexits
int_rel(i:=42, base:=16)
split into base 16 hexits and join into a hexadecimal number
print(str_rel(r:=int_rel(i:=42, base:=16)..r{*, seq:=-seq})..s)
2a
Note: str_rel builds left to right, from smallest seq to largest, so we need to invert the seq provided by int_rel using seq:=-seq.
bulk apply via composition to get hexadecimal STATUS
$S{*, i:=STATUS, STATUS:=STATUS, base:=16}(int_rel){*, r:=r{*, seq:=-seq}}(str_rel)~{sep}
| STATUS | SNO | SNAME | CITY | s |
| 10 | S2 | Jones | Paris | a |
| 20 | S1 | Smith | London | 14 |
| 20 | S4 | Clark | London | 14 |
| 30 | S3 | Blake | Paris | 1e |
| 30 | S5 | Adams | Athens | 1e |
join base 10 digits
int_rel(r:={seq:int, ss:str}{[0,"2"], [1,"4"]}, base:=10)