Portál AbcLinuxu, 8. května 2025 20:28
(defun for-loop (min max func) (func min) (if (= min max) () (for-loop (+ min 1) max func))) (for-loop 1 4 (lambda (i) (print i)))ale hadze to chybu "EVAL: undefined function FUNC" v Scheme mi podobna funkcia normalne funguje:
(define (for-loop min max func) (func min) (if (= min max) (void) (for-loop (+ min 1) max func))) (for-loop 1 4 (lambda (i) (display i)))kde môže byť chyba?
Řešení dotazu:
Treba pouzit funkciu, ktora zavola funkciu func pre argument min (napr. funcall alebo apply). Spravne je to napr. takto (aj ked aj volanie cez lambda by malo fungovat, kazdopadne lepsie by tam bolo mat #' pred (lambda ...))
(defun for-loop (min max func)
(funcall func min)
(if (= min max) () (for-loop (+ min 1) max func)))
(for-loop 1 4 #'print)
funcall
a pro získání funkce jako hodnoty do proměnné z názvu function
neboli #'
, jak už psal kolega. Nějaké povídání je tady.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.