键入球拍
我 `(: collapse ((Listof Expansion) -> Expansion))
; flatten a list of expansions into a single expansion representing the whole thing--
(define (collapse expansions)
(letrec: ([token : String (foldl (λ: ([e : Expansion] [working : String]) (string-append working (token-of e))) "" expansions)]
[normalized-token : String (string-normalize-spaces token)]
[lexicon : Lexicon (foldl (λ: ([e : Expansion] [working : Lexicon])
(merge-lexica working (lexicon-of e)))
(empty-lexicon)
expansions)])
(make-expansion token lexicon)))`
得到
Type Checker: Expected String, but got (case-> (String [#:repeat? Any] [#:trim? Any] -> String) (String (U Regexp String) [#:repeat? Any] [#:trim? Any] -> String) (String (U Regexp String) String [#:repeat? Any] [#:trim? Any] -> String)) in: (string-normalize-spaces token #:trim #f)
如果我删除关键字arg,这将检查得很好(当然,它实际上并没有做我想要的)。
升级到最新版本(令人震惊!)改善了问题-解决了我的require
问题,但我显然仍然错过了一些东西。
升级到Racket 6.0,去掉require
,消除错误