Thinking about an eval step

Hi folks,

Achim and Gerrit and I were talking recently about the p:eval step. In
the course of that discussion, I had an idea.

One of the problems with the eval step is that atomic steps have a
fixed signature and pipelines don’t. There has to be some kind of
multiplexing of inputs and outputs in order to translate from the
actual pipeline’s ports to the declared ports on p:eval.

What occurred to me was that compound steps don’t have this
limitation, so what if p:eval was a compound step?

The idea is that one of its input ports would be the pipeline to
evaluate. All of the other input ports and output ports would be
connected up to the eval’d pipeline.

Because each invocation of a compound step gets to declare its inputs
and outputs, you could simply make the names match in each case.

There are a few details to work out.

1. What about the case where you don’t know what the inputs and
outputs are? I’m suspicious that this is such a rare edge case we
don’t have to stress about it too much.

2. What about the subpipeline in the compound step? It doesn’t make
sense to have one, so I think we’d have to adjust the rules to say
that it was required to be empty.

3. What’s the name of the port from which the step gets the pipeline?
I can think of a couple of possibilities. One is that the port is
called “pipeline”. It’s an error if you attempt to use the p:eval step
without providing a “pipeline” port. Then you have the problem of what
to do if the pipeline you want to run has an input port named
“pipeline”. So maybe there’s an option on the p:eval step to specify
an alternate name. Another, perhaps better, possibility is to say that
you have to declare it and the first input port you declare
(irrespective of what name you give it) is the one from which the
pipeline will be read.

There may be other problems, but that’s the outline of my idea.

                                        Be seeing you,
                                          norm

-- 
Norman Walsh
Lead Engineer
MarkLogic Corporation
Phone: +1 512 761 6676
www.marklogic.com

Received on Monday, 27 March 2017 23:04:23 UTC