>>> dropI (1:>2:>3:>4:>5:>Nil) :: Vec 2 Int 4 :> 5 :> Nil
>>> spined = ensureSpine (errorX "?" :: (Int, Int)) >>> case spined of (_, _) -> 'a' 'a' >>> fmap (const 'b') (ensureSpine undefined :: Vec 3 Int) 'b' :> 'b' :> 'b' :> Nil >>> fmap (const 'c') (ensureSpine undefined :: RTree 2 Int) <<'c','c'>,<'c','c'>>For users familiar with lazyV: this is the generalized version of it.
>>> spined = ensureSpine (errorX "?" :: (Int, Int)) >>> case spined of (_, _) -> 'a' 'a' >>> fmap (const 'b') (ensureSpine undefined :: Vec 3 Int) 'b' :> 'b' :> 'b' :> Nil >>> fmap (const 'c') (ensureSpine undefined :: RTree 2 Int) <<'c','c'>,<'c','c'>>For users familiar with lazyV: this is the generalized version of it.