Eval в racket (scheme) - Lisp

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

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

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

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

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

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

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

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут