Eval в racket (scheme) - Lisp

Узнай цену своей работы

Формулировка задачи:

Хочу опробовать генетические алгоритмы, но застопорился на выполнении. Есть функция, которая генерирует функции (исходный текст не прикладываю, дабы не раздувать пост, но, если понадобится, выложу)
> (gen-fun 3)
'(* (sin (/ x x)) (/ x (tan -2.6227513946435153)))
> (gen-fun 3)
'(expt (sin -5.433515578082585) (tan (tan -2.8049946072136223)))
> (gen-fun 3)
'(tan (tan (+ 0.6028992322746305 x)))
> (gen-fun 3)
'(* (/ (tan 9.743122557776399) (/ 7.036349746296359 1.7600744697487674)) (tan (/ 0.7442720548269772 8.116294599182272)))
> (define x (gen-fun 2))
> x
'(/ (+ -7.469734548056681 x) (expt x -8.792416166705676))
> (list? x)
#t

Вопрос: как правильно применить это к аргументам?

P.S. Если что, в common lisp вопрос также актуален Требуется что-то, вроде
((λ (x) (gen-fun 3)) 15)

Решение задачи: «Eval в racket (scheme)»

textual
Листинг программы
((define (add-lambda sexpr args)
  `(lambda ,args ,sexpr))
 
(add-lambda '(sin x) '(x)) => '(lambda (x) (sin x))
(eval (list (add-lambda '(sin x) '(x)) 1)) => 0.84...

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5