support `is null`
use gnu readline for main()
use getopt