如何在 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?)))
将进行类型检查。
我在类型化的球拍程序中有一个可选字符串列表,即
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?)))
将进行类型检查。