<div dir="ltr"><div class="markdown-here-wrapper" style=""><p style="margin:0px 0px 1.2em!important">Hello…</p>
<p style="margin:0px 0px 1.2em!important">I’ve being accessing R from Ruby with success with calls to Polyglot.eval. like:</p>
<p style="margin:0px 0px 1.2em!important">func = Polyglot.eval(“R”, “c”).call(1, 2, 3)</p>
<p style="margin:0px 0px 1.2em!important">I’m now trying to do a callback from R to Ruby. I’ve tried something like:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline;white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important">class Callback
def f(x, y)
Math.cos(y) / (1 + x^2)
end
end
remote = Polyglot.eval("R", <<-R)
function(rb_method) {
rb_method.call(1, 2)
}
R
remote.call(Callback.new.method(:f))
</code></pre><p style="margin:0px 0px 1.2em!important">But this doesn’t work. Is there an easy way of making this callback? And what about sending an instance of a class instead of a function? </p>
<p style="margin:0px 0px 1.2em!important">Thanks</p>
<div title="MDH:PGRpdj5IZWxsby4uLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+SSd2ZSBiZWluZyBhY2Nlc3Np
bmcgUiBmcm9tIFJ1Ynkgd2l0aCBzdWNjZXNzIHdpdGggY2FsbHMgdG8gUG9seWdsb3QuZXZhbC4g
bGlrZTo8YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5mdW5jID0gUG9seWdsb3QuZXZhbCgi
UiIsICJjIikuY2FsbCgxLCAyLCAzKTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2
PjxkaXY+SSdtIG5vdyB0cnlpbmcgdG8gZG8gYSBjYWxsYmFjayBmcm9tIFIgdG8gUnVieS4mbmJz
cDsgSSd2ZSB0cmllZCBzb21ldGhpbmcgbGlrZTo8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PiZu
YnNwOyZuYnNwOyZuYnNwOyBjbGFzcyBDYWxsYmFjazxicj48YnI+Jm5ic3A7ICZuYnNwOyZuYnNw
OyZuYnNwOyBkZWYgZih4LCB5KTxicj4mbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i
c3A7IE1hdGguY29zKHkpIC8gKDEgKyB4XjIpPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOyBlbmQ8YnI+Jm5ic3A7IDxicj4mbmJzcDsmbmJzcDsmbmJzcDsgZW5kPGJyPjxicj4mbmJz
cDsmbmJzcDsmbmJzcDsgcmVtb3RlID0gUG9seWdsb3QuZXZhbCgiUiIsICZsdDsmbHQ7LVIpPGJy
PiZuYnNwOyZuYnNwOyZuYnNwOyBmdW5jdGlvbihyYl9tZXRob2QpIHs8YnI+Jm5ic3A7Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJiX21ldGhvZC5jYWxsKDEsIDIpPGJyPiZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOyB9PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyBSPGJyPjxicj4mbmJzcDsm
bmJzcDsmbmJzcDsgcmVtb3RlLmNhbGwoQ2FsbGJhY2submV3Lm1ldGhvZCg6ZikpPGJyPjwvZGl2
PjxkaXY+PGJyPjwvZGl2PjxkaXY+QnV0IHRoaXMgZG9lc24ndCB3b3JrLiZuYnNwOyBJcyB0aGVy
ZSBhbiBlYXN5IHdheSBvZiBtYWtpbmcgdGhpcyBjYWxsYmFjaz8mbmJzcDsgQW5kIHdoYXQgYWJv
dXQgc2VuZGluZyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIGluc3RlYWQgb2YgYSBmdW5jdGlvbj8g
PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+VGhhbmtzPGJyPjwvZGl2PjxkaXY+PGJyPjwv
ZGl2Pg==" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0"></div></div><div class="markdown-here-signature">-- <br><div dir="ltr" class="gmail_signature">Rodrigo Botafogo<br><br></div></div></div>