MONADIC EVALUATION OF INJECTED QUERY COMPOSITIONS
First Claim
1. A system for bi-directional, dynamically programmable injection of operations into communications between a first process and a second process, said system comprising:
- a memory area associated with the second process, said memory area storing a uniform resource locator (URL) having one or more operators with closures embedded therein, said operators with closures corresponding to at least one request for data; and
a processor programmed to;
receive the URL from a first process via a network and store the received URL in the memory area;
extract the operators with closures from the URL stored in the memory area;
evaluate, by the second process, the extracted operators with closures to generate the requested data, said evaluation including;
converting the closures to simply-typed closures, andbinding the operators with converted closures within a monad to encapsulate the generated data from the operators with converted closures; and
send the generated data to the first process.
2 Assignments
0 Petitions
Accused Products
Abstract
Embodiments enable the evaluation of injected queries within a monad. One or more operators with closures are received from a first process. The operators with closures represent one or more functions to be applied by a second process. The second process evaluates the received operators with closures to apply the functions within the monad. During evaluation, the second process converts the closures to simply typed closures. Further, the second process binds the converted closures within the monad to restrict execution of the functions. In some embodiments, the queries (e.g., sequences of one or more operators with closures) are composed using a set of query operators from the language integrated query (LINQ) framework encoded in uniform resource locators (URLs) in the representational state transfer (REST) style.
22 Citations
20 Claims
-
1. A system for bi-directional, dynamically programmable injection of operations into communications between a first process and a second process, said system comprising:
-
a memory area associated with the second process, said memory area storing a uniform resource locator (URL) having one or more operators with closures embedded therein, said operators with closures corresponding to at least one request for data; and a processor programmed to; receive the URL from a first process via a network and store the received URL in the memory area; extract the operators with closures from the URL stored in the memory area; evaluate, by the second process, the extracted operators with closures to generate the requested data, said evaluation including; converting the closures to simply-typed closures, and binding the operators with converted closures within a monad to encapsulate the generated data from the operators with converted closures; and send the generated data to the first process. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method comprising:
-
receiving, from a first process, one or more operators with closures, said operators with closures representing one or more functions to be performed by a second process; and evaluating, by the second process, the received operators with closures to execute the functions by; converting the closures to simply-typed closures; and binding the operators with converted closures within a monad to restrict execution of the functions. - View Dependent Claims (8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. One or more computer storage media embodying computer-executable components, said components comprising:
-
a communications interface component that when executed causes at least one processor to receive, from a first process, a communication having a sequence of operators with closures injected therein, said operators with closures representing functions to be performed by a second process to generate output data; and a script component that when executed causes at least one processor to statically analyze, by the second process, the operators with closures in sequence to execute the functions to generate the output data, said script component including; a type-checking component that when executed causes at least one processor to convert each of the closures to simply typed closures; and an encapsulation component that when executed causes at least one process to apply, within a monad, the operators with closures converted by the type-checking component during the static analysis to the output data from a prior stage in the sequence of operators with closures to contain the execution of the functions. wherein the communications interface component provides the generated output data to the first process. - View Dependent Claims (18, 19, 20)
-
Specification