首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++如何将此lisp函数引入到可编译代码中?

C++如何将此lisp函数引入到可编译代码中?
EN

Stack Overflow用户
提问于 2013-04-07 01:03:59
回答 2查看 144关注 0票数 0

我有一个巨大的lisp函数,我想在我的c++应用程序中使用它。此函数是使用决策树生成算法生成的。

对于如何轻松地将其合并到我的代码中,我没有一个好主意。我不想使用任何外部库,也不想用它的树叶来创建类。此外,我想让它更容易加载,这就是为什么我首先考虑在一个大的if-then函数中编译它。

如果有人知道如何用一种漂亮的方式来编译这篇文章,请告诉我。如果你不知道我想做什么,或者没有任何想法,那么请不要张贴任何东西。

这是lisp函数的一个示例。它总共有10.000行左右。

代码语言:javascript
复制
((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))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-07 01:19:32

您有两个选择:

  • 使用Lisp作为嵌入到C++应用程序中的脚本语言,然后将函数作为脚本运行。参见this answer找到一些C++库来完成这类任务。
  • 将你的lisp函数完全翻译成C++。显然,您已经将数据和代码放在同一个函数中。您应该将其分开,将数据放入要加载的文件中,然后使算法更加清晰。别忘了把算法分成几个不同的函数...另外,一个10000行的函数很难维护,所以即使你不打算把它翻译成C++,你也应该像前面说过的那样破坏它。如果你确切地知道这个函数的作用,它应该不会太难。您可以使用一些C++11功能来模拟某种函数式语言。
票数 1
EN

Stack Overflow用户

发布于 2013-04-08 15:31:12

还有一种选择是使用CFFI的回调机制:

http://common-lisp.net/project/cffi/manual/html_node/defcallback.html#defcallback

但这将改变你看待应用程序的方式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15853642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档