((function distance
   (signature float
     (parameters
       (declare (in) float p0)
       (declare (in) float p1))
     ((return (expression float abs (expression float - (var_ref p0) (var_ref p1))))))

   (signature float
     (parameters
       (declare (in) vec2 p0)
       (declare (in) vec2 p1))
     ((declare () vec2 p)
      (assign (constant bool (1)) (xy) (var_ref p) (expression vec2 - (var_ref p0) (var_ref p1)))
      (return (expression float sqrt (expression float dot (var_ref p) (var_ref p))))))

   (signature float
     (parameters
       (declare (in) vec3 p0)
       (declare (in) vec3 p1))
     ((declare () vec3 p)
      (assign (constant bool (1)) (xyz) (var_ref p) (expression vec3 - (var_ref p0) (var_ref p1)))
      (return (expression float sqrt (expression float dot (var_ref p) (var_ref p))))))

   (signature float
     (parameters
       (declare (in) vec4 p0)
       (declare (in) vec4 p1))
     ((declare () vec4 p)
      (assign (constant bool (1)) (xyzw) (var_ref p) (expression vec4 - (var_ref p0) (var_ref p1)))
      (return (expression float sqrt (expression float dot (var_ref p) (var_ref p))))))
))
