
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?)))