As an experiment I changed the type of stringp to tOr(tFunc(tStr,tInt1),tFunc(tNot(tStr),tInt0))
That does however cause compilation warnings that I think are wrong:
Getopt.pmod:109: Warning: Calling non-function value. Getopt.pmod:109: Warning: Type called: function(string : int(1..1)) | function(!string : int(0..0))