# 1.2

- Migrate `SemialignWithIndex` and `ZipWithIndex` to this package,
  using `FunctorWithIndex` from `indexed-traversable`.
- Add `RepeatWithIndex` type-class.
- Poly-kinded instances (notably `Tagged`)

# 1.1.0.1

- Drop `base-compat` dependency

# 1.1

- Split `Semialign` into `Semialign` and `Zip`.
- Rename old `Zip` into `Repeat`
- i.e. current main hierarchy is
- Remove `malign`, use `salign` or `alignWith mappend` where `Monoid` is necessary.
- Add `Option` instances

```haskell
instance Functor f => Semialign f where
    alignWith :: (These a b -> c) -> f a -> f b -> f c

instance Semialign f => Align f where
    nil :: f a

instance Semialign f => Zip f where
    zipWith :: (a -> b -> c) -> f a -> f b -> f c

instance Zip f => Repeat f where
    repeat :: a -> f a
```

This biased choice, that `Semialign` is a super-class of `Zip` is motivated by the fact that
- There's no `Semialign`-like class anywhere else, yet
- `Zip` and `Repeat` are `Apply` (from `semigroupoids`) and `Applicative` with slightly more laws. I
  If you need only `Repeat` class, and your type isn't `Aling`able, maybe using `Applicative` is enough?

# 1

Split out of `these` package.
