Unify Signatures?
Currently, the signature of a module with a function added differs from the signature of a subpipeline where a constant module of the same type and value as the function is connected to a module of the same type. For example, a pipeline containing a single ConcatenateString module where the input port "str1" is specified by a constant is different from a pipeline containing a String module whose value is the same as the function in the first pipeline connected to a ConcatenateString module via the "str1" port.
Note that this becomes important for the persistence package which relies on the signatures to determine whether a file or directory needs to be regenerated.
A possible solution is to internally expand a pipeline so that functions become modules connected to the appropriate ports, and then compute signatures. This would still allow String("abc") -> String -> String to differ from String("abc") -> String, but that should be a rare case.