A unified IP data for IPv4 and IPv6.
To create this, use the data constructors. Or use read "192.0.2.1" :: IP, for example. Also, "192.0.2.1" can be used as literal with OverloadedStrings.
(read "192.0.2.1" :: IP) == IPv4 (read "192.0.2.1" :: IPv4)True(read "2001:db8:00:00:00:00:00:01" :: IP) == IPv6 (read "2001:db8:00:00:00:00:00:01" :: IPv6)True
Instances9Enum, Eq, Data, Ord, Read, Show, …
Enum IPDefined in iproute-1.7.15 · Data.IP.AddrEq IPDefined in iproute-1.7.15 · Data.IP.AddrEquality over IP addresses. Correctly compare IPv4 and IPv4-embedded-in-IPv6 addresses.
Example8 expressions (read "2001:db8:00:00:00:00:00:01" :: IP) == (read "2001:db8:00:00:00:00:00:01" :: IP)True(read "2001:db8:00:00:00:00:00:01" :: IP) == (read "2001:db8:00:00:00:00:00:05" :: IP)False(read "127.0.0.1" :: IP) == (read "127.0.0.1" :: IP)True(read "127.0.0.1" :: IP) == (read "10.0.0.1" :: IP)False(read "::ffff:127.0.0.1" :: IP) == (read "127.0.0.1" :: IP)True(read "::ffff:127.0.0.1" :: IP) == (read "127.0.0.9" :: IP)False(read "::ffff:127.0.0.1" :: IP) >= (read "127.0.0.1" :: IP)True(read "::ffff:127.0.0.1" :: IP) <= (read "127.0.0.1" :: IP)True
Data IPDefined in iproute-1.7.15 · Data.IP.AddrOrd IPDefined in iproute-1.7.15 · Data.IP.AddrRead IPDefined in iproute-1.7.15 · Data.IP.AddrShow IPDefined in iproute-1.7.15 · Data.IP.AddrIsString IPDefined in iproute-1.7.15 · Data.IP.AddrGeneric IPDefined in iproute-1.7.15 · Data.IP.Addrtype Rep IP = D1 ('MetaDataDefined in iproute-1.7.15 · Data.IP.Addr"IP"
"Data.IP.Addr"
"iproute-1.7.15-3X50rHbdFZS8qgLxLNnKxb"
'False) (C1 ('MetaCons"IPv4"
'PrefixI 'True) (S1 ('MetaSel ('Just"ipv4"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedUnpack) (Rec0 IPv4)) :+: C1 ('MetaCons"IPv6"
'PrefixI 'True) (S1 ('MetaSel ('Just"ipv6"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 IPv6)))