Hello List,

Is there any one else in favor of hiding the PortNum constructor in
Network.Socket in the next release? Here's why:

Prelude> :m + Network.Socket Data.Word
Prelude Network.Socket Data.Word> let p = 5000 :: Word16
Prelude Network.Socket Data.Word> let p' = PortNum p
Prelude Network.Socket Data.Word> let p'' = fromIntegral p :: PortNumber
Loading package parsec-2.1.0.1 ... linking ... done.
Loading package network-2.2.1.1 ... linking ... done.
Prelude Network.Socket Data.Word> p
5000
Prelude Network.Socket Data.Word> p'
34835
Prelude Network.Socket Data.Word> p''
5000

Notice that using the PortNum constructor does not at all do what the
user expects. This really should be a hidden constructor.

Perhaps we can add the following:

mkPortNum :: (Num a) => a -> PortNumber
mkPortNum p = fromIntegral p

/jve
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to