<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">There is an issue #1216: "concatenation of type level symbols missing" [1].<div class=""><br class=""></div><div class="">I made a working patch, but we need to figure out the details.</div><div class="">As the patch introduces new non-obvious name to the base library, I’m starting a thread in libraries@ to figure out community's opinion.</div><div class=""><br class=""></div><div class="">I’m proposing to add `type family (n :: Symbol) <> (m :: Symbol)` to `GHC.TypeLits`.</div><div class=""><br class=""></div><div class="">Currently implementation uses (<>). Another options are (++), (+++) or `AppendSymbol`.</div><div class=""><br class=""></div><div class="">- (<>) resembles Semigroup operation, as (+) resembles Num operation</div><div class="">- (++) is a list appending operation. IMHO it’s a bad choice</div><div class="">- (+++) is used by ghc-typelits-symbols plugin</div><div class="">- `AppendSymbol` is sensible too, if libraries want to define own versions of type-level (<>) (e.g. polykinded)</div><div class=""><br class=""></div><div class="">Discussion period: 2 weeks.</div><div class=""><br class=""></div><div class="">Cheers,</div><div class="">Oleg Grenrus.</div><div class=""><br class=""></div><div class=""><div class="">- [1] <a href="https://ghc.haskell.org/trac/ghc/ticket/12162" class="">https://ghc.haskell.org/trac/ghc/ticket/12162</a> </div></div><div class="">- [2] <a href="https://github.com/konn/ghc-typelits-symbols/blob/cd812f4cfc2e6816a18283a6a0e9bb2d9ea2905e/src/GHC/TypeLits/Symbols/Internal.hs#L6-L8" class="">https://github.com/konn/ghc-typelits-symbols/blob/cd812f4cfc2e6816a18283a6a0e9bb2d9ea2905e/src/GHC/TypeLits/Symbols/Internal.hs#L6-L8</a></div></body></html>