**** New globals: {b:b, d:d, g:g, i:i, i1:i1, i2:i2, i4:i4, i8:i8, n:r8, o:o, qb:b?, qd:d?, qi:i?, qi1:i1?, qi2:i2?, qi4:i4?, qi8:i8?, qn:r8?, qr4:r4?, qr8:r8?, qu1:u1?, qu2:u2?, qu4:u4?, qu8:u8?, r4:r4, r8:r8, s:s, u1:u1, u2:u2, u4:u4, u8:u8}

> IsNull(null)
IsNull(null) : b
Binder : IsNull(null)
Reducer: true
###
> IsNull(-null)
IsNull(-null) : b
Binder : IsNull(Guard(?1: null, Add([-] Unit<i8>(?1))))
Reducer: true
###
> IsNull(not null)
IsNull(not null) : b
Binder : IsNull(Guard(?1: null, Xor(Unit<b>(?1), true)))
Reducer: true
###
> IsNull(null + 3)
IsNull(null + 3) : b
Binder : IsNull(Guard(?1: null, Add(Unit<i8>(?1), 3)))
Reducer: true
###
> IsNull(null + null)
IsNull(null + null) : b
Binder : IsNull(Guard(?1: null, ?2: null, Add(Unit<i8>(?1), Unit<i8>(?2))))
Reducer: true
###
> IsNull(null + Null("")) // Coerce to string.
Corrected by binder: [IsNull(null & Null("")) // Coerce to string.]
IsNull(null + Null("")) : b
*** Warning: (12,13) Node: null + Null(""), Message: The binary operator '+' for text concatenation is deprecated, use '&' instead
Binder : IsNull(StrConcat(str(<null>), DefOpt*("")))
Reducer: false
###
> IsNull(null & null)
IsNull(null & null) : b
Binder : IsNull(StrConcat(str(<null>), str(<null>)))
Reducer: false
###
> IsNull(null ++ null)
IsNull(null ++ null) : b
Binder : IsNull*(SeqConcat(null, null))
Reducer: true
###
> IsNull("")
IsNull("") : b
Binder : IsNull("")
Reducer: false
###
> IsNull(3)
IsNull(3) : b
Binder : IsNull(3)
Reducer: false
###
> IsNull(3.5)
IsNull(3.5) : b
Binder : IsNull(3.5)
Reducer: false
###
> IsNull(true)
IsNull(true) : b
Binder : IsNull(true)
Reducer: false
###
> IsNull([])
IsNull([]) : b
Binder : IsNull*(null)
Reducer: true
###
> IsNull([3])
IsNull([3]) : b
Binder : IsNull*([3])
Reducer: false
###
> IsNull({})
IsNull({  }) : b
Binder : IsNull({})
Reducer: false
###
> IsNull({A:2})
IsNull({ A : 2 }) : b
Binder : IsNull({A:2})
Reducer: false
###
> IsNull(g)
IsNull(g) : b
Binder : IsNull(g)
###
> IsNull(o)
IsNull(o) : b
Binder : IsNull(o)
Reducer: true
###
> IsNull(s)
IsNull(s) : b
Binder : IsNull(s)
###
> IsNull(b)
IsNull(b) : b
Binder : IsNull(b)
Reducer: false
###
> IsNull(d)
IsNull(d) : b
Binder : IsNull(d)
Reducer: false
###
> IsNull(n)
IsNull(n) : b
Binder : IsNull(n)
Reducer: false
###
> IsNull(r8)
IsNull(r8) : b
Binder : IsNull(r8)
Reducer: false
###
> IsNull(r4)
IsNull(r4) : b
Binder : IsNull(r4)
Reducer: false
###
> IsNull(i)
IsNull(i) : b
Binder : IsNull(i)
Reducer: false
###
> IsNull(i8)
IsNull(i8) : b
Binder : IsNull(i8)
Reducer: false
###
> IsNull(i4)
IsNull(i4) : b
Binder : IsNull(i4)
Reducer: false
###
> IsNull(i2)
IsNull(i2) : b
Binder : IsNull(i2)
Reducer: false
###
> IsNull(i1)
IsNull(i1) : b
Binder : IsNull(i1)
Reducer: false
###
> IsNull(u8)
IsNull(u8) : b
Binder : IsNull(u8)
Reducer: false
###
> IsNull(u4)
IsNull(u4) : b
Binder : IsNull(u4)
Reducer: false
###
> IsNull(u2)
IsNull(u2) : b
Binder : IsNull(u2)
Reducer: false
###
> IsNull(u1)
IsNull(u1) : b
Binder : IsNull(u1)
Reducer: false
###
> IsNull(qb)
IsNull(qb) : b
Binder : IsNull(qb)
###
> IsNull(qd)
IsNull(qd) : b
Binder : IsNull(qd)
###
> IsNull(qn)
IsNull(qn) : b
Binder : IsNull(qn)
###
> IsNull(qr8)
IsNull(qr8) : b
Binder : IsNull(qr8)
###
> IsNull(qr4)
IsNull(qr4) : b
Binder : IsNull(qr4)
###
> IsNull(qi)
IsNull(qi) : b
Binder : IsNull(qi)
###
> IsNull(qi8)
IsNull(qi8) : b
Binder : IsNull(qi8)
###
> IsNull(qi4)
IsNull(qi4) : b
Binder : IsNull(qi4)
###
> IsNull(qi2)
IsNull(qi2) : b
Binder : IsNull(qi2)
###
> IsNull(qi1)
IsNull(qi1) : b
Binder : IsNull(qi1)
###
> IsNull(qu8)
IsNull(qu8) : b
Binder : IsNull(qu8)
###
> IsNull(qu4)
IsNull(qu4) : b
Binder : IsNull(qu4)
###
> IsNull(qu2)
IsNull(qu2) : b
Binder : IsNull(qu2)
###
> IsNull(qu1)
IsNull(qu1) : b
Binder : IsNull(qu1)
###
> IsEmpty(null)
IsEmpty(null) : b
Binder : IsEmpty(null)
Reducer: true
###
> IsEmpty(-null)
IsEmpty(-null) : b
*** Error: (8,9) Node: -null, Message: Invalid operand type: cannot convert type 'i8?' to 'i8?*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(not null)
IsEmpty(not null) : b
*** Error: (8,11) Node: not null, Message: Invalid operand type: cannot convert type 'b?' to 'b?*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(null + 3)
IsEmpty(null + 3) : b
*** Error: (13,14) Node: null + 3, Message: Invalid operand type: cannot convert type 'i8?' to 'i8?*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(null & null)
IsEmpty(null & null) : b
Binder : IsEmpty(StrConcat(str(<null>), str(<null>)))
Reducer: true
###
> IsEmpty(null + Null("")) // Coerce to string.
Corrected by binder: [IsEmpty(null & Null("")) // Coerce to string.]
IsEmpty(null + Null("")) : b
*** Warning: (13,14) Node: null + Null(""), Message: The binary operator '+' for text concatenation is deprecated, use '&' instead
Binder : IsEmpty(StrConcat(str(<null>), DefOpt*("")))
Reducer: true
###
> IsEmpty("")
IsEmpty("") : b
Binder : IsEmpty("")
Reducer: true
###
> IsEmpty(3)
IsEmpty(3) : b
*** Error: (8,9) Node: 3, Message: Invalid operand type: cannot convert type 'i8' to 'i8*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(3.5)
IsEmpty(3.5) : b
*** Error: (8,11) Node: 3.5, Message: Invalid operand type: cannot convert type 'r8' to 'r8*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(true)
IsEmpty(true) : b
*** Error: (8,12) Node: true, Message: Invalid operand type: cannot convert type 'b' to 'b*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty([])
IsEmpty([]) : b
Binder : IsEmpty(null)
Reducer: true
###
> IsEmpty(Range(10 * 0))
IsEmpty(Range(10 * 0)) : b
Binder : IsEmpty(Range(Mul(10, 0)))
Reducer: true
###
> IsEmpty([3])
IsEmpty([3]) : b
Binder : IsEmpty([3])
Reducer: false
###
> IsEmpty({})
IsEmpty({  }) : b
*** Error: (8,9) Node: {  }, Message: Invalid operand type: cannot convert type '{}' to '{}*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty({A:2})
IsEmpty({ A : 2 }) : b
*** Error: (8,9) Node: { A : 2 }, Message: Invalid operand type: cannot convert type '{A:i8}' to '{A:i8}*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(g)
IsEmpty(g) : b
*** Error: (8,9) Node: g, Message: Invalid operand type: cannot convert type 'g' to 'g*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(o)
IsEmpty(o) : b
Binder : IsEmpty(o)
Reducer: true
###
> IsEmpty(s)
IsEmpty(s) : b
Binder : IsEmpty(s)
###
> IsEmpty(b)
IsEmpty(b) : b
*** Error: (8,9) Node: b, Message: Invalid operand type: cannot convert type 'b' to 'b*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(d)
IsEmpty(d) : b
*** Error: (8,9) Node: d, Message: Invalid operand type: cannot convert type 'd' to 'd*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(n)
IsEmpty(n) : b
*** Error: (8,9) Node: n, Message: Invalid operand type: cannot convert type 'r8' to 'r8*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(r8)
IsEmpty(r8) : b
*** Error: (8,10) Node: r8, Message: Invalid operand type: cannot convert type 'r8' to 'r8*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(r4)
IsEmpty(r4) : b
*** Error: (8,10) Node: r4, Message: Invalid operand type: cannot convert type 'r4' to 'r4*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(i)
IsEmpty(i) : b
*** Error: (8,9) Node: i, Message: Invalid operand type: cannot convert type 'i' to 'i*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(i8)
IsEmpty(i8) : b
*** Error: (8,10) Node: i8, Message: Invalid operand type: cannot convert type 'i8' to 'i8*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(i4)
IsEmpty(i4) : b
*** Error: (8,10) Node: i4, Message: Invalid operand type: cannot convert type 'i4' to 'i4*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(i2)
IsEmpty(i2) : b
*** Error: (8,10) Node: i2, Message: Invalid operand type: cannot convert type 'i2' to 'i2*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(i1)
IsEmpty(i1) : b
*** Error: (8,10) Node: i1, Message: Invalid operand type: cannot convert type 'i1' to 'i1*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(u8)
IsEmpty(u8) : b
*** Error: (8,10) Node: u8, Message: Invalid operand type: cannot convert type 'u8' to 'u8*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(u4)
IsEmpty(u4) : b
*** Error: (8,10) Node: u4, Message: Invalid operand type: cannot convert type 'u4' to 'u4*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(u2)
IsEmpty(u2) : b
*** Error: (8,10) Node: u2, Message: Invalid operand type: cannot convert type 'u2' to 'u2*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(u1)
IsEmpty(u1) : b
*** Error: (8,10) Node: u1, Message: Invalid operand type: cannot convert type 'u1' to 'u1*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(qb)
IsEmpty(qb) : b
*** Error: (8,10) Node: qb, Message: Invalid operand type: cannot convert type 'b?' to 'b?*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(qd)
IsEmpty(qd) : b
*** Error: (8,10) Node: qd, Message: Invalid operand type: cannot convert type 'd?' to 'd?*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(qn)
IsEmpty(qn) : b
*** Error: (8,10) Node: qn, Message: Invalid operand type: cannot convert type 'r8?' to 'r8?*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(qr8)
IsEmpty(qr8) : b
*** Error: (8,11) Node: qr8, Message: Invalid operand type: cannot convert type 'r8?' to 'r8?*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(qr4)
IsEmpty(qr4) : b
*** Error: (8,11) Node: qr4, Message: Invalid operand type: cannot convert type 'r4?' to 'r4?*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(qi)
IsEmpty(qi) : b
*** Error: (8,10) Node: qi, Message: Invalid operand type: cannot convert type 'i?' to 'i?*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(qi8)
IsEmpty(qi8) : b
*** Error: (8,11) Node: qi8, Message: Invalid operand type: cannot convert type 'i8?' to 'i8?*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(qi4)
IsEmpty(qi4) : b
*** Error: (8,11) Node: qi4, Message: Invalid operand type: cannot convert type 'i4?' to 'i4?*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(qi2)
IsEmpty(qi2) : b
*** Error: (8,11) Node: qi2, Message: Invalid operand type: cannot convert type 'i2?' to 'i2?*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(qi1)
IsEmpty(qi1) : b
*** Error: (8,11) Node: qi1, Message: Invalid operand type: cannot convert type 'i1?' to 'i1?*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(qu8)
IsEmpty(qu8) : b
*** Error: (8,11) Node: qu8, Message: Invalid operand type: cannot convert type 'u8?' to 'u8?*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(qu4)
IsEmpty(qu4) : b
*** Error: (8,11) Node: qu4, Message: Invalid operand type: cannot convert type 'u4?' to 'u4?*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(qu2)
IsEmpty(qu2) : b
*** Error: (8,11) Node: qu2, Message: Invalid operand type: cannot convert type 'u2?' to 'u2?*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###
> IsEmpty(qu1)
IsEmpty(qu1) : b
*** Error: (8,11) Node: qu1, Message: Invalid operand type: cannot convert type 'u1?' to 'u1?*'
Binder : IsEmpty(Error(ErrBadType_Src_Dst))
###

**** New globals: {b:b*, d:d*, g:g*, i:i*, i1:i1*, i2:i2*, i4:i4*, i8:i8*, n:r8*, o:o*, qb:b?*, qd:d?*, qi:i?*, qi1:i1?*, qi2:i2?*, qi4:i4?*, qi8:i8?*, qn:r8?*, qr4:r4?*, qr8:r8?*, qu1:u1?*, qu2:u2?*, qu4:u4?*, qu8:u8?*, r4:r4*, r8:r8*, s:s*, u1:u1*, u2:u2*, u4:u4*, u8:u8*, v:v*}

> IsNull(g)
IsNull(g) : b
Binder : IsNull*(g)
Reducer: IsEmpty(g)
###
> IsNull(v)
IsNull(v) : b
Binder : IsNull*(v)
Reducer: IsEmpty(v)
###
> IsNull(o)
IsNull(o) : b
Binder : IsNull*(o)
Reducer: IsEmpty(o)
###
> IsNull(s)
IsNull(s) : b
Binder : IsNull*(s)
Reducer: IsEmpty(s)
###
> IsNull(b)
IsNull(b) : b
Binder : IsNull*(b)
Reducer: IsEmpty(b)
###
> IsNull(d)
IsNull(d) : b
Binder : IsNull*(d)
Reducer: IsEmpty(d)
###
> IsNull(n)
IsNull(n) : b
Binder : IsNull*(n)
Reducer: IsEmpty(n)
###
> IsNull(r8)
IsNull(r8) : b
Binder : IsNull*(r8)
Reducer: IsEmpty(r8)
###
> IsNull(r4)
IsNull(r4) : b
Binder : IsNull*(r4)
Reducer: IsEmpty(r4)
###
> IsNull(i)
IsNull(i) : b
Binder : IsNull*(i)
Reducer: IsEmpty(i)
###
> IsNull(i8)
IsNull(i8) : b
Binder : IsNull*(i8)
Reducer: IsEmpty(i8)
###
> IsNull(i4)
IsNull(i4) : b
Binder : IsNull*(i4)
Reducer: IsEmpty(i4)
###
> IsNull(i2)
IsNull(i2) : b
Binder : IsNull*(i2)
Reducer: IsEmpty(i2)
###
> IsNull(i1)
IsNull(i1) : b
Binder : IsNull*(i1)
Reducer: IsEmpty(i1)
###
> IsNull(u8)
IsNull(u8) : b
Binder : IsNull*(u8)
Reducer: IsEmpty(u8)
###
> IsNull(u4)
IsNull(u4) : b
Binder : IsNull*(u4)
Reducer: IsEmpty(u4)
###
> IsNull(u2)
IsNull(u2) : b
Binder : IsNull*(u2)
Reducer: IsEmpty(u2)
###
> IsNull(u1)
IsNull(u1) : b
Binder : IsNull*(u1)
Reducer: IsEmpty(u1)
###
> IsNull(qb)
IsNull(qb) : b
Binder : IsNull*(qb)
Reducer: IsEmpty(qb)
###
> IsNull(qd)
IsNull(qd) : b
Binder : IsNull*(qd)
Reducer: IsEmpty(qd)
###
> IsNull(qn)
IsNull(qn) : b
Binder : IsNull*(qn)
Reducer: IsEmpty(qn)
###
> IsNull(qr8)
IsNull(qr8) : b
Binder : IsNull*(qr8)
Reducer: IsEmpty(qr8)
###
> IsNull(qr4)
IsNull(qr4) : b
Binder : IsNull*(qr4)
Reducer: IsEmpty(qr4)
###
> IsNull(qi)
IsNull(qi) : b
Binder : IsNull*(qi)
Reducer: IsEmpty(qi)
###
> IsNull(qi8)
IsNull(qi8) : b
Binder : IsNull*(qi8)
Reducer: IsEmpty(qi8)
###
> IsNull(qi4)
IsNull(qi4) : b
Binder : IsNull*(qi4)
Reducer: IsEmpty(qi4)
###
> IsNull(qi2)
IsNull(qi2) : b
Binder : IsNull*(qi2)
Reducer: IsEmpty(qi2)
###
> IsNull(qi1)
IsNull(qi1) : b
Binder : IsNull*(qi1)
Reducer: IsEmpty(qi1)
###
> IsNull(qu8)
IsNull(qu8) : b
Binder : IsNull*(qu8)
Reducer: IsEmpty(qu8)
###
> IsNull(qu4)
IsNull(qu4) : b
Binder : IsNull*(qu4)
Reducer: IsEmpty(qu4)
###
> IsNull(qu2)
IsNull(qu2) : b
Binder : IsNull*(qu2)
Reducer: IsEmpty(qu2)
###
> IsNull(qu1)
IsNull(qu1) : b
Binder : IsNull*(qu1)
Reducer: IsEmpty(qu1)
###
> IsEmpty(g)
IsEmpty(g) : b
Binder : IsEmpty(g)
###
> IsEmpty(o)
IsEmpty(o) : b
Binder : IsEmpty(o)
###
> IsEmpty(s)
IsEmpty(s) : b
Binder : IsEmpty(s)
###
> IsEmpty(b)
IsEmpty(b) : b
Binder : IsEmpty(b)
###
> IsEmpty(d)
IsEmpty(d) : b
Binder : IsEmpty(d)
###
> IsEmpty(n)
IsEmpty(n) : b
Binder : IsEmpty(n)
###
> IsEmpty(r8)
IsEmpty(r8) : b
Binder : IsEmpty(r8)
###
> IsEmpty(r4)
IsEmpty(r4) : b
Binder : IsEmpty(r4)
###
> IsEmpty(i)
IsEmpty(i) : b
Binder : IsEmpty(i)
###
> IsEmpty(i8)
IsEmpty(i8) : b
Binder : IsEmpty(i8)
###
> IsEmpty(i4)
IsEmpty(i4) : b
Binder : IsEmpty(i4)
###
> IsEmpty(i2)
IsEmpty(i2) : b
Binder : IsEmpty(i2)
###
> IsEmpty(i1)
IsEmpty(i1) : b
Binder : IsEmpty(i1)
###
> IsEmpty(u8)
IsEmpty(u8) : b
Binder : IsEmpty(u8)
###
> IsEmpty(u4)
IsEmpty(u4) : b
Binder : IsEmpty(u4)
###
> IsEmpty(u2)
IsEmpty(u2) : b
Binder : IsEmpty(u2)
###
> IsEmpty(u1)
IsEmpty(u1) : b
Binder : IsEmpty(u1)
###
> IsEmpty(qb)
IsEmpty(qb) : b
Binder : IsEmpty(qb)
###
> IsEmpty(qd)
IsEmpty(qd) : b
Binder : IsEmpty(qd)
###
> IsEmpty(qn)
IsEmpty(qn) : b
Binder : IsEmpty(qn)
###
> IsEmpty(qr8)
IsEmpty(qr8) : b
Binder : IsEmpty(qr8)
###
> IsEmpty(qr4)
IsEmpty(qr4) : b
Binder : IsEmpty(qr4)
###
> IsEmpty(qi)
IsEmpty(qi) : b
Binder : IsEmpty(qi)
###
> IsEmpty(qi8)
IsEmpty(qi8) : b
Binder : IsEmpty(qi8)
###
> IsEmpty(qi4)
IsEmpty(qi4) : b
Binder : IsEmpty(qi4)
###
> IsEmpty(qi2)
IsEmpty(qi2) : b
Binder : IsEmpty(qi2)
###
> IsEmpty(qi1)
IsEmpty(qi1) : b
Binder : IsEmpty(qi1)
###
> IsEmpty(qu8)
IsEmpty(qu8) : b
Binder : IsEmpty(qu8)
###
> IsEmpty(qu4)
IsEmpty(qu4) : b
Binder : IsEmpty(qu4)
###
> IsEmpty(qu2)
IsEmpty(qu2) : b
Binder : IsEmpty(qu2)
###
> IsEmpty(qu1)
IsEmpty(qu1) : b
Binder : IsEmpty(qu1)
###
> v->ForEach(it->IsNull())
v->ForEach(it->IsNull()) : b*
Binder : ForEach(*1: v, IsNull(*1))
###
> Sum(i4, [>] it) // Unsupported directive
Sum(i4, [>] it) : i8
*** Error: (8,11) Node: [>] it, Tok: '[>]', Message: Unexpected directive
Binder : Sum(*1: i4, Num<i8>(*1))
###
> IsEmpty([~>] i4) // Unsupported directive
IsEmpty([~>] i4) : b
*** Error: (8,12) Node: [~>] i4, Tok: '[~>]', Message: Unexpected directive
Binder : IsEmpty(i4)
###
> Abs(A: i4) // Unsupported name
Abs(A : i4) : i4*
*** Error: (4,5) Node: A : i4, Tok: 'A', Message: Unexpected name
Binder : ForEach(*1: i4, Abs(*1))
###
> i4->GetType()
i4->GetType() : s
Binder : GetType*(i4)
Reducer: "i4*"
###
> i4->GetBindInfo()
i4->GetBindInfo() : s
Binder : GetBindInfo*(i4)
Reducer: "BoundNode: Global(i4)\n     Type: i4*"
###
> (i4 + i8)->GetBindInfo()
(i4 + i8)->GetBindInfo() : s
Binder : GetBindInfo*(ForEach(*1: i4, *2: i8, Add(Num<i8>(*1), *2)))
Reducer: "BoundNode: Call(∂.ForEach([map:1] Global(i4), [map:2] Global(i8), Add(Num<i8>(Scope(1)), Scope(2))):i8*)\n     Type: i8*"
###
> ForEach(a: i4, b: i8, (a + b)->GetBindInfo())
ForEach(a : i4, b : i8, (a + b)->GetBindInfo()) : s*
Binder : ForEach(*1: i4, *2: i8, GetBindInfo*(Add(Num<i8>(*1), *2)))
Reducer: ForEach(*1: i4, *2: i8, "BoundNode: Add(Num<i8>(Scope(1x)), Scope(2x))\n     Type: i8")
###
> i4->{N:it}->ForEach(N->GetBindInfo())
i4->{ N : it }->ForEach(N->GetBindInfo()) : s*
Binder : ForEach(*3: ForEach(*1: i4, Guard(!2: *1, {N:!2})), GetBindInfo*(*3.N))
Reducer: ForEach(*1: i4, "BoundNode: GetField(Scope(1x), N)\n     Type: i4")
###
