<div dir="ltr">Hello,<div><br></div><div>I was assigned to be the shepherd for the Hex Float proposal  (<a href="https://github.com/ghc-proposals/ghc-proposals/pull/37">https://github.com/ghc-proposals/ghc-proposals/pull/37</a>), so I would like to propose that we accept it for implementation in GHC.</div><div><br></div><div>This is a small change, which can be summarized as follows:</div><div>    - allow floating point numbers to be written using hex digits.</div><div><br></div><div>The format is exactly the same as decimal floating point numbers, except for:</div><div>    - the literals start with 0x</div><div>    - the digits are in hex</div><div>    - the exponent symbol is `p` or `P`, instead of `e` or `E`</div><div>    - the exponent is in base 2, rather than base 10</div><div><br></div><div>This notation has become popular among people working with floating point numbers, as the numbers you write can be represented exactly, which is not the case for base 10 numbers.</div><div><br></div><div>The following points were discussed:</div><div>   - the exact format to use, compared to what's allowed by other languages: we decided to just follow Haskell's decimal float notation, for least surprise</div><div>   - should overflow (which becomes `Inf`) result in a warning?   We decided that this is an orthogonal issue, also relevant to decimal floating point and made a GHC ticket (#13232)</div><div>    - there is an odd interaction between floating point (both decimal and hex) and -XNegativeLiterals, related to negative 0, see ticket #13211</div><div>     - changing the Read instances for Float and Double to recognize hex floats could break some programs, although that does not seem all that likely</div><div>     - there is a question of how many extra pretty printing functions to add to `Numeric`: the current thinking is that maybe just one `showHFloat` is sufficient;  the alternative is to add 5, mirroring the `show[E,F,G]Float` functions for decimals.</div><div><br></div><div>I also had a stab at implementing the basic notation here: <a href="https://phabricator.haskell.org/D3066">https://phabricator.haskell.org/D3066</a></div><div>I haven't done the changes to the libraries yet.</div><div><br></div><div>Please let me know if you have any objections or suggestions on what might needs to be changed.</div><div><br></div><div>Cheers,</div><div>-Iavor</div><div><br></div><div><br></div><div><br></div><div><br></div></div>