
#13652: Add integer division to GHC.TypeLits -------------------------------------+------------------------------------- Reporter: vagarenko | Owner: (none) Type: feature request | Status: new Priority: normal | Milestone: Component: Core Libraries | Version: 8.0.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D4002 Wiki Page: | -------------------------------------+------------------------------------- Changes (by RyanGlScott): * differential: D4002 => Phab:D4002 Comment: Replying to [comment:3 vagarenko]:
like this: {{{#!hs type DivMod a b = (Div a b, Mod a b) }}} ?
Yes.
Why would it be less performant than baked in `DivMod`? Because `a` and `b` would be reduced twice?
Indeed. Internally, `div` and `mod` (on which the type-level `Div` and `Mod` are based) are defined in terms of `divMod`, so this definition of `DivMod` would likely compute `divMod` twice. I can't give you an accurate estimate of how many CPU cycles that would waste, but there is certainly some inefficiency there. But then again, this is your feature request, so I'll leave the final call up to you. Is the status quo (having just `Div` and `Mod`) acceptable for you? Or do you want to see `base` have the full trifecta of `Div`, `Mod`, and `DivMod`, each of which are based on their respective machine arithmetic operations? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13652#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler