> finding points inside a shape

Any hints about how a point thus found would be used?

if any such point is fit, why not make a ref point part of shape definition: define the shape as

type Coord= (Int,Int,Int)
type IsWithin=Coord ->Bool
type Shape= (Coord, IsWithin)