let lineofsight (src : pos) (dst : pos) (f : pos -> bool) =
       let rec loop xs = match xs with
         | (x :: xs') ->
             if f x
             then loop xs'
             else false
         | [] -> true
       in
         loop (Geometry.line src dst)