For a complex syntax form like `command-line`, I have difficulty correctly 
annotate the bindings it defines.

More specifically, in the below code, for variable `msg`, even the document[1] 
says the `#:args` binds as list of **strings**, but the error indicates that it 
somehow is declared as `Listof Any`.

Similarly, for variable `ch` bound in line 11, I believe it should always be 
`String`, but it somehow is declared to be `Any`.

What should I do with this type of error, if I want my varaibles to be more 
precisely typed than just `Any`?


[1]: 
https://docs.racket-lang.org/reference/Command-Line_Parsing.html?q=command-line#%28form._%28%28lib._racket%2Fcmdline..rkt%29._command-line%29%29

```
 1      #lang typed/racket
 2      
 3      (define *channel* (make-parameter "#general"))
 4      (define *message* : (Parameterof (Listof String)) (make-parameter '()))
 5      
 6      
 7      (define (parse-cmdline)
 8          (command-line
 9           #:program "q"
10           #:once-each
11           [("-c" "--channel") ch "slack channel to post (default: use .qrc 
setting or default)" (*channel* ch)]
12           #:args msg
13           (*message* msg)))
14      
15      
16      #|
17      tr.rkt:11:91: Type Checker: Wrong argument to parameter - expected 
String and got Any in: (*channel* ch)
18      tr.rkt:13:5: Type Checker: Wrong argument to parameter - expected 
(Listof String) and got (Listof Any) in: (*message* msg)
19      |#
```

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to