top | item 41688099

(no title)

pakl | 1 year ago

At Alan Kay’s Viewpoints Research Institute, the problem was phrased in a more concrete form and a solution was provided — “Call by Meaning”[0].

The most succinct way I have found to state the problem is: “For example, getting the length of a string object varies significantly from one language to another... size(), count, strlen(), len(), .length, .length(), etc. How can one communicate with a computer -- or how can two computers communicate with each other -- at scale, without a common language?” [1]

The call-by-meaning solution is to refer to functions (processes, etc) not by their name, but by what they do. VPRI provided an example implementation in JavaScript[0]. I re-implemented this -- a bit more cleanly, IMHO -- in Objective C[1].

[0] http://www.vpri.org/pdf/tr2014003_callbymeaning.pdf

[1] https://github.com/plaurent/call-by-meaning-objc?tab=readme-...

discuss

order

toast0|1 year ago

> The call-by-meaning solution is to refer to functions (processes, etc) not by their name, but by what they do.

This seems like call by an even longer, more difficult to use name.

And it would seem to rely on a common language to describe functions/methods, which clearly we don't have or everyone would use the same names for things that do the same thing already.

pakl|1 year ago

Think about it. A “meaning” in this usage is definitely not a longer name.

pilgrim0|1 year ago

I find this super interesting! The first thing that comes to mind reading the demo code is, perhaps against the purpose, to canonicalize the lookup examples, which in turns evokes that the examples could be expressed by type expressions alone. Which makes me think of a type system that embeds a generalized set of algebraic operations, so that the adder function is one that simply returns the type Number + Number. Those could be semantic operations, beyond the basic mathematical ones, of course. Anyways, just thinking out loud.

gandalfgeek|1 year ago

Thanks for the pointer!

"Call by meaning" sounds exactly like LLMs with tool-calling. The LLM is the component that has "common-sense understanding" of which tool to invoke when, based purely on natural language understanding of each tool's description and signature.