#2446: Network.Socket.PortNum should not be exported
-------------------------+--------------------------------------------------
Reporter: cjs | Owner:
Type: bug | Status: new
Priority: normal | Component: Compiler
Version: 6.8.3 | Severity: normal
Keywords: | Testcase:
Architecture: Multiple | Os: Multiple
-------------------------+--------------------------------------------------
Network.Socket exports a PortNum value constructor. Though there's no
haddock documentation to say so, this constructs a value of type
PortNumber by taking a Word16 in *machine* order, i.e., byte-swapped on
little-endian machines.
However, PortNumber is an instance of Num and has a fromIntegral (that
converts from a non-byte-swapped int), so when specifying a PortNumber for
a something such as a SockAddrInet, one should just use an Integral. That
is, instead of
SockAddrInet (PortNum $ fromIntegral (byteswap 12345)) hostaddr
one should just use
SockAddrInet 12345 hostaddr
I think that the PortNum constructor should not be exported; it's
difficult to use due to the lack of documentation (and its own nature,
really), is not necessary, and worst of all, its existence has mislead at
least two programmers I know of to use it when they didn't want or need
to.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/2446>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs