badkins
2021-12-1 00:48:10

Phew, finally got this contract working! I have a (2nd) argument to a function that looks like: (list (list symbol? procedure? string? procedure? string? ...)) In other words, it’s a list of lists, and the inner lists have a symbol and one or more “pairs” of procedure? string?, except they’re not structured. How this came about is a long story, but I wanted to see if I could create a contract to describe it as is vs. refactoring the function signature: define field-pairs/c (or/c (list/c procedure? string?) (cons/c procedure? (cons/c string? (recursive-contract field-pairs/c #:list-contract?))))) (->* (any/c (listof (cons/c symbol? field-pairs/c))) (#:accessor procedure?) (listof (cons/c symbol? string?)))