[Haskell-cafe] Re: Haskell not ready for Foo [was: Re: Hypothetical
Haskell job in New York]
Bardur Arantsson
spam at scientician.net
Thu Jan 8 17:23:47 EST 2009
John Goerzen wrote:
> On Thu, Jan 08, 2009 at 10:37:55PM +0100, Bardur Arantsson wrote:
>> Don't get me wrong -- the socket support is pretty decent, but there are
>> also some weird idiosyncrasies, for example requiring that the PortNum
>> is specified in network byte order and lacking a function to convert
>> host->network byte order (hton).
>
> Look at Haddock for PortNumber:
>
> newtype PortNumber
> Constructors
> PortNum Word16
>
> Instances
>
> Enum PortNumber
> Eq PortNumber
> Integral PortNumber
> Num PortNumber
> Ord PortNumber
> Real PortNumber
> Show PortNumber
> Typeable PortNumber
> Storable PortNumber
>
> Try it in ghci:
>
> Prelude Network.Socket> 15 :: PortNumber
> 15
> Prelude Network.Socket> PortNum 15
> 3840
> Prelude Network.Socket> (fromIntegral (15::Int))::PortNumber
> 15
>
> So, in essence, there are *many* functions that let you do this. You
> should not be needing to construct PortNum by hand.
Thanks. For some reason I hadn't thought to use
(fromIntegral x)::PortNumber
I guess I got stuck on the idea of constructing a PortNum directly and
didn't think beyond that. (Maybe PortNum should really be an abstract
type to force indirect construction...?)
I guess the API isn't all that idiosyncratic after all :).
Cheers,
Bardur Arantsson
More information about the Haskell-Cafe
mailing list