<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi,<div><br></div><div>I'm not sure if this is a riak or an erlang specific question. I'm guessing it's probably an erlang question.</div><div><br></div><div>I have the following erlang function in a module, mapreduce_play.erl (it's a silly skeleton function, but I'm just playing around):</div><div><br></div><div>get_objects(Server, Port, Bucket, FilterList) -> </div><div><div>  {ok, Client} = riakc_pb_socket:start(Server, Port),</div><div>  </div><div>  Input = {Bucket, [FilterList]},</div><div><br></div><div>  MapFun = fun(Object, _KeyData, _Args) -></div><div>            [Object]</div><div>          end,</div><div><br></div><div>  MapPhase = {map, {qfun, MapFun}, notused, true},</div><div>  Query = [MapPhase],</div><div>  riakc_pb_socket:mapred(Client, Input, Query).</div></div><div><br></div><div><br></div><div>If I copy the function body, line for line into the erlang shell, replacing values as I go along, the code works fine, and I get results back correctly.</div><div><br></div><div>However, If I call the function, in the same shell, I get the following error:</div><div><br></div><div>{error,<<"{error,\n    {error,undef,\n        [{#Fun<mapreduce_play.0.108144614>,\n          [{r_object,<<\"family\">>,<<"...>>}</div><div><br></div><div>This is not what I expected to happen. Has this got something to do with the nature of the anonymous function, one being defined in the shell and the other in a module? I've seen this link:</div><div><br></div><div><a href="http://blog.inagist.com/link-map-reduce-in-riak-an-example-from-inagi">http://blog.inagist.com/link-map-reduce-in-riak-an-example-from-inagi</a></div><div><br></div><div>Which at the end of the post has the following :</div><div><br></div><div>"<span class="Apple-style-span" style="color: rgb(126, 126, 126); font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21px; ">Of interest is the make_local_fun which creates a function reference which can be passed over to a remote node, without the remote node having a copy of this compiled code in its path"</span></div><div><br></div><div>So, why does passing the anonymous function defined in the shell work, but it fails when the anonymous function was defined inside a module?</div><div><br></div><div>Thanks,</div><div>Ryan</div></body></html>