fromList_ :: [a] -> (Int, SizedList n a)
fromList_ = f 0
  where
    f i [] = (i, unsafeCoerce N)
    f i (x:xs) =
        let (sum, lst) = f (i+1) xs
        in
        unsafeCoerce (sum, x :- unsafeCoerce lst)
fromList_ :: [a] -> (Int, SizedList n a)
fromList_ = f 0
  where
    f i [] = (i, unsafeCoerce N)
    f i (x:xs) =
        let (sum, lst) = f (i+1) xs
        in
        unsafeCoerce (sum, x :- unsafeCoerce lst)
fromList_ = f 0
  where
    f i [] = (i, unsafeCoerce N)
    f i (x:xs) =
        let (sum, lst) = f (i+1) xs
        in
        unsafeCoerce (sum, x :- unsafeCoerce lst)