This library offers three types for IP addresses: IPv4, IPv6, and IP. Two of these, IP and IPv6, are the same thing, but IP has special provisions for mapped IPv4 addresses. The newtype is only used to distinguish JSON instances. I think we can drop the newtype and leave the Net.IP module mostly alone, switching all the types to IPv6. There's the question of what the JSON instances for IPv6 should do, and I think that showing mapped IPv4 addresses in JSON as a plain old dot-decimal-encoded IPv4 address is what most people will want.
This library offers three types for IP addresses:
IPv4,IPv6, andIP. Two of these,IPandIPv6, are the same thing, butIPhas special provisions for mapped IPv4 addresses. The newtype is only used to distinguish JSON instances. I think we can drop the newtype and leave theNet.IPmodule mostly alone, switching all the types toIPv6. There's the question of what the JSON instances forIPv6should do, and I think that showing mapped IPv4 addresses in JSON as a plain old dot-decimal-encoded IPv4 address is what most people will want.