showIp returns a Text value.
readIp performs hand-rolled parsing from Text values.
showMac works with Text values.
readMac uses a hand-rolled parser from Text to Mac.
drop dependency on safe.
readIp and readMac return an Either String.