如何在 Typed Racket 中断言(listof?string?)谓词

How to assert (listof? string?) predicate in Typed Racket

我在类型化的球拍程序中有一个可选字符串列表,即

statements : (Listof (Option String))

我有另一个接受 (Listof String) 的函数,我知道除非引发异常,否则语句中的所有字符串都存在。我想断言这个事实,但我不知道如何断言像 (listof? string?) 这样的谓词来证明这一点到类型球拍。

你可以写一个:

(define (listof-string? (l : (Listof Any)))
  (andmap string? l))

然后:

(define (bar (x : (Listof String)))
  x)

(define (foo (x : (Listof (Option String))))
  (bar (assert x listof-string?)))

将进行类型检查。