У меня есть огромная функция lisp, которую я хочу использовать в своем приложении c ++.
Эта функция была сгенерирована с использованием алгоритма принятия дерева решений.
У меня нет хорошей идеи о том, как легко включить его в мой код.
Я не хочу использовать какие-либо внешние библиотеки, и я не хочу делать классы с деревьями и листьями из них. Кроме того, я хочу упростить загрузку, поэтому я сначала подумал о том, чтобы скомпилировать его в большую функцию if-then.
Если у кого-нибудь есть идеи, как сделать этот компилятор красивым, скажите, пожалуйста.
Если вы не знаете, что я хочу сделать, или у вас нет идей, просто не пишите ничего.
Это образец функции LISP. Это около 10.000 строк в полном объеме.
((prev_is_pause is 0)
((prev_prev_gender is d)
((houses_from_month_start < 1.9)
((houses_from_month_start < 0.1)
((customer_numsegs < 3.6)
((customers_from_company_start < 6)
((prev_jobtype is n)
((next_hairtype is -)
((0.0332597 0.109037))
((0.0535314 0.143047)))
((called_houses_from_month_end < 3.5)
((next_next_single is +)
((0.0682613 0.200642))
((month_numhouses < 8.3)
((0.0631857 0.11954))
((0.0737018 0.165414))))
((0.0442889 0.225281))))
((0.075459 0.110669)))
((next_garden is 2)
((0.0726842 0.152881))
((prev_jobtype is n)
((0.0458975 0.12033))
((next_customerbegin_jobtype is s)
((0.0246754 0.0992865))
((prev_prev_talks is aI)
((0.0240179 0.0708011))
((0.0238049 0.0894625)))))))
((prev_birthplace is a)
((next_invoice is ".")
((company_numcustomers < 13)
((called_houses_from_month_end < 2.4)
((next_talks is t)
((0.0586338 0.13392))
У вас есть два варианта:
Еще одним вариантом является использование механизма обратного вызова CFFI:
http://common-lisp.net/project/cffi/manual/html_node/defcallback.html#defcallback
Но это изменит то, как вы смотрите на свое приложение.