[GHC] #12998: libraries/base/System/Posix/Types.hs: tries to define Floating instance for opaque type

GHC ghc-devs at haskell.org
Sat Dec 17 23:15:44 UTC 2016


#12998: libraries/base/System/Posix/Types.hs: tries to define Floating instance for
opaque type
-------------------------------------+-------------------------------------
        Reporter:  slyfox            |                Owner:
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.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):
       Wiki Page:                    |
-------------------------------------+-------------------------------------
Changes (by RyanGlScott):

 * cc: DanielG (added)


Comment:

 As I note
 [https://phabricator.haskell.org/rGHCffc2327070dbb664bdb407a804121eacb2a7c734
 here], a quick-and-dirty fix would be to introduce a macro
 `OPAQUE_TYPE_WITH_CTYPE` in `CTypes.h`:

 {{{#!hs
 #define OPAQUE_CLASSES Eq,Ord,Storable

 #define OPAQUE_TYPE_WITH_CTYPE(T,THE_CTYPE,B) \
 newtype {-# CTYPE "THE_CTYPE" #-} T = T B \
     deriving (OPAQUE_CLASSES) \
     deriving newtype (Read, Show);
 }}}

 And then use that on `CTimer` instead of `FLOATING_TYPE_WITH_CTYPE`. Of
 course, this doesn't fix the infelicity that the underlying representation
 of `CTimer` is still not a `Ptr ()`, which would require fixing the
 `FPTOOLS_CHECK_HTYPE_ELSE`
 [http://git.haskell.org/ghc.git/blob/ffc2327070dbb664bdb407a804121eacb2a7c734:/libraries/base/aclocal.m4#l115
 M4 macro] in `libraries/base/aclocal.m4` to remedy.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12998#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list