let mapM mapfunc f_t_a =
      let (f_t_int, arr_a) = index f_t_a in
      let arr_m_b = Array.map mapfunc arr_a
      in
        (M.sequence_array arr_m_b) >>=
          (fun arr_b -> let f_t_b = deindex f_t_int arr_b in M.return f_t_b)