Ракетка: сопоставьте остальные аргументы с другой процедурой - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь взять список параметров отдыха и сопоставить их со списком аргументов для процедуры plot в Racket, но мне почему-то не повезло.

(define (graph fn/1
               #:grid? [grid? true] 
               #:min [min -20] 
               #:max [max 20]
               . fns)
   (define plot-input 
           (list (axes)
                 (if grid? (tick-grid) empty)
                 (function identity #:style 'dot #:width 1.5 #:color 'gray)
                 (function fn/1)
                 ;; would like (function f) for each f in fns iff fns exists
   ))
   (plot plot-input
         #:x-min min
         #:x-max max
         #:y-min min
         #:y-max max))

1 Ответ

0 голосов
/ 01 мая 2018

Просто используйте map:

   (define plot-input 
           (list* (axes)
                  (if grid? (tick-grid) empty)
                  (function identity #:style 'dot #:width 1.5 #:color 'gray)
                  (function fn/1)
                  ;; would like (function f) for each f in fns iff fns exists
                  (map function fns)
   ))

Использует list* для склейки в списке результатов, полученных с помощью map, вместо исходного list.

...