packages feed

semialign-1.3: CHANGELOG.md

# 1.3

- Depend on `bifunctor-classes-compat` instead of `bifunctors`
  See changelog note in `bifunctors-5.6`: https://hackage.haskell.org/package/bifunctors-5.6/changelog
  This is breaking change, but affects only GHC-8.0 and older users.
  In that case you should check various combinations of newer/older
  `bifunctors`, `these`, and `semialign` packages.

# 1.2.0.1

-  GHC-9.2 support

# 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.