{"action":"closed","issue":{"url":"https://api.github.com/repos/IBMStreams/administration/issues/65","labels_url":"https://api.github.com/repos/IBMStreams/administration/issues/65/labels{/name}","comments_url":"https://api.github.com/repos/IBMStreams/administration/issues/65/comments","events_url":"https://api.github.com/repos/IBMStreams/administration/issues/65/events","html_url":"https://github.com/IBMStreams/administration/issues/65","id":92734446,"number":65,"title":"Proposal: FunctorM operator and repository streamsx.relational for it.","user":{"login":"hildrum","id":5419652,"avatar_url":"https://avatars.githubusercontent.com/u/5419652?v=3","gravatar_id":"","url":"https://api.github.com/users/hildrum","html_url":"https://github.com/hildrum","followers_url":"https://api.github.com/users/hildrum/followers","following_url":"https://api.github.com/users/hildrum/following{/other_user}","gists_url":"https://api.github.com/users/hildrum/gists{/gist_id}","starred_url":"https://api.github.com/users/hildrum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hildrum/subscriptions","organizations_url":"https://api.github.com/users/hildrum/orgs","repos_url":"https://api.github.com/users/hildrum/repos","events_url":"https://api.github.com/users/hildrum/events{/privacy}","received_events_url":"https://api.github.com/users/hildrum/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":26,"created_at":"2015-07-02T20:59:56Z","updated_at":"2015-08-10T17:09:36Z","closed_at":"2015-08-10T17:09:36Z","body":"The standard toolkit's `Functor` operator creates a new tuple for each input tuple.  For large tuples, particularly when multiple `Functor`s are used in processing, the cost of generating a new tuple can be noticeable.\r\n\r\nI am proposing a new operator `FunctorM` that changes the input tuple rather than creating a new tuple.  Unlike Functor, its input port would be mutating.  This operator would be restricted to the case where:\r\n* there is one output stream\r\n* the input type and output type are identical\r\n\r\nDepending on the tuple size and the number of `Functor`s, using `FunctorM` can be 2x faster.\r\n\r\nI picked the name `FunctorM` after the standard toolkit's `insert`/`insertM` and so on.  \r\nThere doesn't seem to be a repository in which this would fit, so we'd probably need a new one.  `Functor` is in spl.relational, so it would make sense to put this in the namespace com.ibm.streamsx.relational.    I think the repository name should be  `streamsx.relational`."}}