l1 ax ay az =
  [ (x,y,z)
  | x <- ax
  | y <- ay
  | z <- az
  ]

l2 ax ay az =
  [ (x,y,z)
  | x <- ax x -- neither of these x's should be in scope
  | y <- ay x
  | z <- az x
  ]