inOptional :: VarIn -> ArgIn a -> ArgIn (Maybe a)
inOptional varin_def argin = \val var -> do
   case val of
     Nothing -> varin_def var
     Just v  -> argin v var
inOptional :: VarIn -> ArgIn a -> ArgIn (Maybe a)
inOptional varin_def argin = \val var -> do
   case val of
     Nothing -> varin_def var
     Just v  -> argin v var
inOptional varin_def argin = \val var -> do
   case val of
     Nothing -> varin_def var
     Just v  -> argin v var