The contract for #:style arguments (when they refer to lines), and paramters such as line-style.
For the meaning of integer pen styles, see ->pen-style.
The contract for #:style arguments (when they refer to fills), and parameters such as interval-style.
For the meaning of integer brush styles, see ->brush-style.
Many plot functions, such as contours and isosurfaces3d, optionally take lists of appearance values (such as (listofplot-color/c)) as arguments.
A very flexible argument contract would accept functions that produce lists of appearance values.
For example, contours would accept any f with contract (->(listofreal?)(listofplot-color/c)) for its #:colors argument.
When rendering a contour plot, contours would apply f to a list of the contour z values to get the contour colors.
However, most uses do not need this flexibility.
Therefore, plot’s functions accept either a list of appearance values or a function from a list of appropriate values to a list of appearance values.
The maybe-function/c function constructs contracts for such arguments.
In plot functions, if in-contract is a listof contract, the output list’s length need not be the same as the input list’s length.
If it is shorter, the appearance values will cycle; if longer, the tail will not be used.
The next example is more sophisticated: it sends a function-valued (plot-colors/civl?) to contour-intervals.
The function constructs colors from the values of the contour intervals.