Проблема в том, что вы определили smooth
слишком поздно. То есть, когда вы вызываете plot
, библиотека графиков пытается вызвать ваш smoothsquare
, который, в свою очередь, пытается вызвать smooth
, но smooth
еще не определен, потому что он определен только после вызова plot
готово.
Следующий код должен работать:
#lang racket
(require plot)
(define dx 0.00001)
(define (smooth f)
(lambda (x)
(/ (+ (f (- x dx))
(f x)
(f (+ x dx)))
3)))
(define (smoothsquare x)
((smooth square) x))
(define (square x)
(* x x))
(plot (function smoothsquare -1 1))