在R中运行Racket代码

use*_*503 4 r racket

有没有办法从R(R脚本调用球拍代码)运行球拍代码?

我看着Rseek和其他来源,没有任何指示.

Gre*_*ott 9

最近在Racket邮件列表中出现了一个类似的问题,有人发布了一个链接到旧线程的链接,其中Matthew Flatt建议启动子流程和管道.

看起来Julia不提供外部接口(例如,从C调用Julia).所以,我认为你必须在一个单独的进程中运行Julia,process或者subprocess通过stdin和stdout与进程通信.

在2014年1月29日星期三16:58:29 -0800(太平洋标准时间),E Comer写道:

嗨,Racket开发人员,程序员和用户:

有没有办法从DrRacket调用Julia函数?[我正在尝试将Julia的数字运算功能与Racket中的Plot模块的漂亮图形集成,以研究特定动态系统的某些属性]

非常感谢您的支持.

恩里克

例如,编写一个循环的小型Racket程序:从stdin读取,将结果写入stdout.它的读写格式取决于您.它可以读取s表达式(方便在Racket中)并输出一个面向行的结果(在R中可能更方便,我不知道).

然后让R作为子进程启动Racket程序,并与其stdin和stdout对话.

作为反向的一个示例(将球队管道连接到子进程),请参阅此Racket"客户端"此Python"服务器"子进程交谈.我不知道R是否有类似Racket的东西process,它为你提供了子进程的stdin和stout.

尽管FFI似乎是"正确的"方法,但实际上在高级语言之间编组事物可能具有挑战性.当你有一些特定的互操作时,通常是过度的.我的建议是从管道到子流程的方法开始.它通常简单可靠.它可能会变得足够快以满足您的需求.有时甚至更快.[1]


[1]:作为一些轶事,请看一下GitHub在Ruby代码中使用Python编写的Pygments的历史.有一次,他们有一些精心设计的方法在Ruby中嵌入Python.为了加快速度,他们转而在子进程和管道中运行Pygments.(无论如何,这是我对提交历史的理解.)