What does Expr stands for

Hi I have run into some problem on parameter types but luckily I got it solved. Here I want to ask about how to actively avoid similar issues

@ti.func 
def distance(x0, y0, x1, y1, x2, y2):  
    dist = ((x2-x1)**2+(y2-y1)**2)**0.5
    res = ((x2-x0)*(y1-y0)-(y2-y0)*(x1-x0))/dist
    return res
@ti.kernel
    dist = distance(0,2,3,4,5,6)

In this function why shouldn’t I use ti.sqr & ti.sqrt?
I suppose the ti.sqr should work on Taichi variables, and can 0, 2, … be viewed as ti.var or some Expression in intermediate representation?