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)