为什么字符串规范化空格类型不使用关键字 arg 进行检查?



键入球拍

  `(: 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,消除错误

最新更新