New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ParallelTable should localize variable #135
Comments
How can we find all functions that should localize variables? Here's an attempt: which functions have "LocalVariables" SetAttributes[localizingFunQ, HoldAll]
localizingFunQ[sym_] :=
Lookup[SyntaxInformation[Unevaluated[sym]], "LocalVariables", None] =!=None Result: In[22]:= res = Select[
Names["System`*"],
ToExpression[#, InputForm, localizingFunQ] &
]
Out[22]= {"Animate", "Apart", "ApartSquareFree", "ArcCurvature", \
"ArcLength", "ArgMax", "ArgMin", "AsymptoticEqual", \
"AsymptoticEquivalent", "AsymptoticGreater", \
"AsymptoticGreaterEqual", "AsymptoticLess", "AsymptoticLessEqual", \
"BodePlot", "CoefficientArrays", "Collect", "ComplexExpand", \
"ConicOptimization", "ContinuedFractionK", "ContourPlot", \
"ContourPlot3D", "ControllerManipulate", "Curl", \
"CylindricalDecomposition", "D", "DensityPlot", "DiscreteLimit", \
"DiscreteMaxLimit", "DiscreteMinLimit", "DiscretePlot", \
"DiscretePlot3D", "Div", "Do", "Eliminate", "EntityFunction", \
"FactorTerms", "FactorTermsList", "FindArgMax", "FindArgMin", \
"FindInstance", "FindMaximum", "FindMaxValue", "FindMinimum", \
"FindMinValue", "FindRoot", "FourierCosTransform", \
"FourierSinTransform", "FourierTransform", "FrenetSerretSystem", \
"FunctionInterpolation", "GenericCylindricalDecomposition", "Grad", \
"GroebnerBasis", "ImplicitRegion", "Integrate", "Laplacian", "Limit", \
"LinearFractionalOptimization", "LinearOptimization", \
"LineIntegralConvolutionPlot", "ListLineIntegralConvolutionPlot", \
"LogLinearPlot", "LogLogPlot", "LogPlot", "Manipulate", "Maximize", \
"MaxLimit", "MaxValue", "Minimize", "MinLimit", "MinValue", \
"NArgMax", "NArgMin", "NDSolve", "NDSolveValue", "NicholsPlot", \
"NIntegrate", "NMaximize", "NMaxValue", "NMinimize", "NMinValue", \
"NProduct", "NRoots", "NSolve", "NSum", "NyquistPlot", "ParallelDo", \
"ParallelProduct", "ParallelSum", "ParallelTable", "ParametricPlot", \
"ParametricPlot3D", "ParametricRegion", "Play", "Plot", "Plot3D", \
"PolarPlot", "Product", "QuadraticOptimization", "Reduce", \
"RegionPlot", "RegionPlot3D", "RepeatingElement", "RevolutionPlot3D", \
"RootLocusPlot", "Roots", "RSolve", "RSolveValue", \
"SecondOrderConeOptimization", "SemialgebraicComponentInstances", \
"SemidefiniteOptimization", "Series", "SingularValuePlot", \
"SliceContourPlot3D", "SliceDensityPlot3D", "Solve", "SolveAlways", \
"SphericalPlot3D", "StreamDensityPlot", "StreamPlot", "Sum", "Table", \
"VectorDensityPlot", "VectorPlot", "VectorPlot3D"} Well, that's a lot ... and most should probably not be handled by the WL plugin. The docs say that the "LocalVariables" setting in SetAttributes[localizingType, HoldAll]
localizingType[sym_] :=
First@Lookup[SyntaxInformation[Unevaluated[sym]], "LocalVariables", {"None"}]
GroupBy[
Symbol /@ res,
localizingType
] We get <|"Manipulate" -> {Animate, ControllerManipulate, Manipulate,
RepeatingElement},
"Solve" -> {Apart, ApartSquareFree, ArcCurvature, ArgMax, ArgMin,
CoefficientArrays, Collect, ComplexExpand, ConicOptimization, Curl,
CylindricalDecomposition, Div, Eliminate, EntityFunction,
FactorTerms, FactorTermsList, FindArgMax, FindArgMin, FindInstance,
FindMaximum, FindMaxValue, FindMinimum, FindMinValue,
FourierCosTransform, FourierSinTransform, FourierTransform,
FrenetSerretSystem, GenericCylindricalDecomposition, Grad,
GroebnerBasis, ImplicitRegion, Laplacian,
LinearFractionalOptimization, LinearOptimization, Maximize,
MaxValue, Minimize, MinValue, NArgMax, NArgMin, NMaximize,
NMaxValue, NMinimize, NMinValue, NRoots, NSolve, ParametricRegion,
QuadraticOptimization, Reduce, Roots, RSolve, RSolveValue,
SecondOrderConeOptimization, SemialgebraicComponentInstances,
SemidefiniteOptimization, Solve, SolveAlways},
"Plot" -> {ArcLength, ContourPlot, ContourPlot3D, DensityPlot,
DiscretePlot, DiscretePlot3D, FunctionInterpolation,
LineIntegralConvolutionPlot, ListLineIntegralConvolutionPlot,
LogLinearPlot, LogLogPlot, LogPlot, NDSolve, NDSolveValue,
ParametricPlot, ParametricPlot3D, Play, Plot, Plot3D, PolarPlot,
RegionPlot, RegionPlot3D, RevolutionPlot3D, RootLocusPlot, Series,
SliceContourPlot3D, SliceDensityPlot3D, SphericalPlot3D,
StreamDensityPlot, StreamPlot, VectorDensityPlot, VectorPlot,
VectorPlot3D},
"Limit" -> {AsymptoticEqual, AsymptoticEquivalent, AsymptoticGreater,
AsymptoticGreaterEqual, AsymptoticLess, AsymptoticLessEqual,
DiscreteLimit, DiscreteMaxLimit, DiscreteMinLimit, Limit, MaxLimit,
MinLimit},
"Table" -> {BodePlot, ContinuedFractionK, Do, FindRoot, NicholsPlot,
NProduct, NSum, NyquistPlot, ParallelDo, ParallelProduct,
ParallelSum, ParallelTable, Product, SingularValuePlot, Sum,
Table}, "D" -> {D}, "Integrate" -> {Integrate, NIntegrate}|> There are some out-of-place things here, but I would say we need
|
@szhorvat I fixed several of them and I appreciate a lot that you dug this up in such a structural way. I will leave this issue open because I'd like to fix some more of the plot-functions that are missing. |
Alright, I made an effort to convert the symbol-information into the format I'm using to see what's necessary to include more. Two questions:
Here is what I used: SetAttributes[localizingFunQ, HoldAll]
localizingFunQ[sym_] :=
Lookup[SyntaxInformation[Unevaluated[sym]], "LocalVariables", None] =!= None;
res = Select[Names["System`*"], ToExpression[#, InputForm, localizingFunQ] &];
SetAttributes[convertLocalization, HoldAll]
convertLocalization[sym_] := Module[{type, place, str, start, end},
str = ToString[sym];
{type, place} =
Lookup[SyntaxInformation[Unevaluated[sym]],
"LocalVariables", {"None"}][[1 ;; 2]];
Switch[place,
{_Integer},
start = end = place[[1]] - 1,
{_Integer, _Integer},
{start, end} = place - 1,
{_Integer, Infinity},
{start, end} = {place[[1]] - 1, -1},
_,
Throw["wtf is with " <> str <> " " <> ToString[place]]
];
StringTemplate[
"`uname`(\"`name`\", ScopeType.`utype`_LIKE, 0, `start`, \
`end`)"][
<| "uname" -> ToUpperCase[str],
"name" -> str,
"utype" -> ToUpperCase[type],
"start" -> start,
"end" -> end
|>
]
] and it gives me the definitions I can use in Java. However, atm I don't have
ABSARGPLOT("AbsArgPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
ANIMATE("Animate", ScopeType.MANIPULATE_LIKE, 0, 1, -1)
APART("Apart", ScopeType.SOLVE_LIKE, 0, 1, 1)
APARTSQUAREFREE("ApartSquareFree", ScopeType.SOLVE_LIKE, 0, 1, 1)
ARCCURVATURE("ArcCurvature", ScopeType.SOLVE_LIKE, 0, 1, 1)
ARCLENGTH("ArcLength", ScopeType.PLOT_LIKE, 0, 1, 1)
ARGMAX("ArgMax", ScopeType.SOLVE_LIKE, 0, 1, 1)
ARGMIN("ArgMin", ScopeType.SOLVE_LIKE, 0, 1, 1)
ASYMPTOTIC("Asymptotic", ScopeType.LIMIT_LIKE, 0, 1, 1)
ASYMPTOTICDSOLVEVALUE("AsymptoticDSolveValue", ScopeType.LIMIT_LIKE, 0, 2, 3)
ASYMPTOTICEQUAL("AsymptoticEqual", ScopeType.LIMIT_LIKE, 0, 2, 2)
ASYMPTOTICEQUIVALENT("AsymptoticEquivalent", ScopeType.LIMIT_LIKE, 0, 2, 2)
ASYMPTOTICGREATER("AsymptoticGreater", ScopeType.LIMIT_LIKE, 0, 2, 2)
ASYMPTOTICGREATEREQUAL("AsymptoticGreaterEqual", ScopeType.LIMIT_LIKE, 0, 2, 2)
ASYMPTOTICINTEGRATE("AsymptoticIntegrate", ScopeType.LIMIT_LIKE, 0, 2, 2)
ASYMPTOTICLESS("AsymptoticLess", ScopeType.LIMIT_LIKE, 0, 2, 2)
ASYMPTOTICLESSEQUAL("AsymptoticLessEqual", ScopeType.LIMIT_LIKE, 0, 2, 2)
ASYMPTOTICPRODUCT("AsymptoticProduct", ScopeType.LIMIT_LIKE, 0, 2, 2)
ASYMPTOTICRSOLVEVALUE("AsymptoticRSolveValue", ScopeType.LIMIT_LIKE, 0, 2, 3)
ASYMPTOTICSOLVE("AsymptoticSolve", ScopeType.LIMIT_LIKE, 0, 1, 2)
ASYMPTOTICSUM("AsymptoticSum", ScopeType.LIMIT_LIKE, 0, 2, 2)
BODEPLOT("BodePlot", ScopeType.TABLE_LIKE, 0, 1, -1)
COEFFICIENTARRAYS("CoefficientArrays", ScopeType.SOLVE_LIKE, 0, 1, 1)
COLLECT("Collect", ScopeType.SOLVE_LIKE, 0, 1, 1)
COMPLEXCONTOURPLOT("ComplexContourPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
COMPLEXEXPAND("ComplexExpand", ScopeType.SOLVE_LIKE, 0, 1, 1)
COMPLEXPLOT("ComplexPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
COMPLEXPLOT3D("ComplexPlot3D", ScopeType.PLOT_LIKE, 0, 1, 1)
COMPLEXREGIONPLOT("ComplexRegionPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
COMPLEXSTREAMPLOT("ComplexStreamPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
COMPLEXVECTORPLOT("ComplexVectorPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
CONICOPTIMIZATION("ConicOptimization", ScopeType.SOLVE_LIKE, 0, 2, 2)
CONTINUEDFRACTIONK("ContinuedFractionK", ScopeType.TABLE_LIKE, 0, 1, -1)
CONTOURPLOT("ContourPlot", ScopeType.PLOT_LIKE, 0, 1, 2)
CONTOURPLOT3D("ContourPlot3D", ScopeType.PLOT_LIKE, 0, 1, 3)
CONTROLLERMANIPULATE("ControllerManipulate", ScopeType.MANIPULATE_LIKE, 0, 1, -1)
CONVOLVE("Convolve", ScopeType.SOLVE_LIKE, 0, 2, 2)
CURL("Curl", ScopeType.SOLVE_LIKE, 0, 1, 1)
CYLINDRICALDECOMPOSITION("CylindricalDecomposition", ScopeType.SOLVE_LIKE, 0, 1, 1)
D("D", ScopeType.D_LIKE, 0, 1, -1)
DENSITYPLOT("DensityPlot", ScopeType.PLOT_LIKE, 0, 1, 2)
DIRICHLETCONVOLVE("DirichletConvolve", ScopeType.SOLVE_LIKE, 0, 2, 2)
DISCRETECONVOLVE("DiscreteConvolve", ScopeType.SOLVE_LIKE, 0, 2, 2)
DISCRETELIMIT("DiscreteLimit", ScopeType.LIMIT_LIKE, 0, 1, 1)
DISCRETEMAXLIMIT("DiscreteMaxLimit", ScopeType.LIMIT_LIKE, 0, 1, 1)
DISCRETEMINLIMIT("DiscreteMinLimit", ScopeType.LIMIT_LIKE, 0, 1, 1)
DISCRETEPLOT("DiscretePlot", ScopeType.PLOT_LIKE, 0, 1, 1)
DISCRETEPLOT3D("DiscretePlot3D", ScopeType.PLOT_LIKE, 0, 1, 2)
DIV("Div", ScopeType.SOLVE_LIKE, 0, 1, 1)
DO("Do", ScopeType.TABLE_LIKE, 0, 1, -1)
ELIMINATE("Eliminate", ScopeType.SOLVE_LIKE, 0, 1, 1)
ENTITYFUNCTION("EntityFunction", ScopeType.SOLVE_LIKE, 0, 0, 0)
EXPONENTIALGENERATINGFUNCTION("ExponentialGeneratingFunction", ScopeType.SOLVE_LIKE, 0, 1, 1)
FACTORTERMS("FactorTerms", ScopeType.SOLVE_LIKE, 0, 1, 1)
FACTORTERMSLIST("FactorTermsList", ScopeType.SOLVE_LIKE, 0, 1, 1)
FINDARGMAX("FindArgMax", ScopeType.SOLVE_LIKE, 0, 1, 1)
FINDARGMIN("FindArgMin", ScopeType.SOLVE_LIKE, 0, 1, 1)
FINDINSTANCE("FindInstance", ScopeType.SOLVE_LIKE, 0, 1, 1)
FINDMAXIMUM("FindMaximum", ScopeType.SOLVE_LIKE, 0, 1, 1)
FINDMAXVALUE("FindMaxValue", ScopeType.SOLVE_LIKE, 0, 1, 1)
FINDMINIMUM("FindMinimum", ScopeType.SOLVE_LIKE, 0, 1, 1)
FINDMINVALUE("FindMinValue", ScopeType.SOLVE_LIKE, 0, 1, 1)
FINDROOT("FindRoot", ScopeType.TABLE_LIKE, 0, 1, -1)
FOURIERCOSTRANSFORM("FourierCosTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
FOURIERSEQUENCETRANSFORM("FourierSequenceTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
FOURIERSINTRANSFORM("FourierSinTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
FOURIERTRANSFORM("FourierTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
FRENETSERRETSYSTEM("FrenetSerretSystem", ScopeType.SOLVE_LIKE, 0, 1, 1)
FUNCTIONINTERPOLATION("FunctionInterpolation", ScopeType.PLOT_LIKE, 0, 1, -1)
GENERATINGFUNCTION("GeneratingFunction", ScopeType.SOLVE_LIKE, 0, 1, 1)
GENERICCYLINDRICALDECOMPOSITION("GenericCylindricalDecomposition", ScopeType.SOLVE_LIKE, 0, 1, 1)
GRAD("Grad", ScopeType.SOLVE_LIKE, 0, 1, 1)
GROEBNERBASIS("GroebnerBasis", ScopeType.SOLVE_LIKE, 0, 1, 2)
IMPLICITREGION("ImplicitRegion", ScopeType.SOLVE_LIKE, 0, 1, 1)
INTEGRATE("Integrate", ScopeType.INTEGRATE_LIKE, 0, 1, -1)
INVERSEFOURIERCOSTRANSFORM("InverseFourierCosTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
INVERSEFOURIERSEQUENCETRANSFORM("InverseFourierSequenceTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
INVERSEFOURIERSINTRANSFORM("InverseFourierSinTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
INVERSEFOURIERTRANSFORM("InverseFourierTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
INVERSELAPLACETRANSFORM("InverseLaplaceTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
INVERSEMELLINTRANSFORM("InverseMellinTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
INVERSEZTRANSFORM("InverseZTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
LAPLACETRANSFORM("LaplaceTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
LAPLACIAN("Laplacian", ScopeType.SOLVE_LIKE, 0, 1, 1)
LIMIT("Limit", ScopeType.LIMIT_LIKE, 0, 1, 1)
LINEARFRACTIONALOPTIMIZATION("LinearFractionalOptimization", ScopeType.SOLVE_LIKE, 0, 2, 2)
LINEAROPTIMIZATION("LinearOptimization", ScopeType.SOLVE_LIKE, 0, 2, 2)
LINEINTEGRALCONVOLUTIONPLOT("LineIntegralConvolutionPlot", ScopeType.PLOT_LIKE, 0, 1, 2)
LISTFOURIERSEQUENCETRANSFORM("ListFourierSequenceTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
LISTLINEINTEGRALCONVOLUTIONPLOT("ListLineIntegralConvolutionPlot", ScopeType.PLOT_LIKE, 0, 1, 2)
LISTZTRANSFORM("ListZTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
LOGLINEARPLOT("LogLinearPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
LOGLOGPLOT("LogLogPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
LOGPLOT("LogPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
MANIPULATE("Manipulate", ScopeType.MANIPULATE_LIKE, 0, 1, -1)
MAXIMIZE("Maximize", ScopeType.SOLVE_LIKE, 0, 1, 1)
MAXLIMIT("MaxLimit", ScopeType.LIMIT_LIKE, 0, 1, 1)
MAXVALUE("MaxValue", ScopeType.SOLVE_LIKE, 0, 1, 1)
MELLINCONVOLVE("MellinConvolve", ScopeType.SOLVE_LIKE, 0, 2, 2)
MELLINTRANSFORM("MellinTransform", ScopeType.SOLVE_LIKE, 0, 1, 1)
MINIMIZE("Minimize", ScopeType.SOLVE_LIKE, 0, 1, 1)
MINLIMIT("MinLimit", ScopeType.LIMIT_LIKE, 0, 1, 1)
MINVALUE("MinValue", ScopeType.SOLVE_LIKE, 0, 1, 1)
NARGMAX("NArgMax", ScopeType.SOLVE_LIKE, 0, 1, 1)
NARGMIN("NArgMin", ScopeType.SOLVE_LIKE, 0, 1, 1)
NDSOLVE("NDSolve", ScopeType.PLOT_LIKE, 0, 2, -1)
NDSOLVEVALUE("NDSolveValue", ScopeType.PLOT_LIKE, 0, 2, -1)
NICHOLSPLOT("NicholsPlot", ScopeType.TABLE_LIKE, 0, 1, -1)
NINTEGRATE("NIntegrate", ScopeType.INTEGRATE_LIKE, 0, 1, -1)
NMAXIMIZE("NMaximize", ScopeType.SOLVE_LIKE, 0, 1, 1)
NMAXVALUE("NMaxValue", ScopeType.SOLVE_LIKE, 0, 1, 1)
NMINIMIZE("NMinimize", ScopeType.SOLVE_LIKE, 0, 1, 1)
NMINVALUE("NMinValue", ScopeType.SOLVE_LIKE, 0, 1, 1)
NPRODUCT("NProduct", ScopeType.TABLE_LIKE, 0, 1, -1)
NROOTS("NRoots", ScopeType.SOLVE_LIKE, 0, 1, 1)
NSOLVE("NSolve", ScopeType.SOLVE_LIKE, 0, 1, 1)
NSUM("NSum", ScopeType.TABLE_LIKE, 0, 1, -1)
NYQUISTPLOT("NyquistPlot", ScopeType.TABLE_LIKE, 0, 1, -1)
PARALLELDO("ParallelDo", ScopeType.TABLE_LIKE, 0, 1, -1)
PARALLELPRODUCT("ParallelProduct", ScopeType.TABLE_LIKE, 0, 1, -1)
PARALLELSUM("ParallelSum", ScopeType.TABLE_LIKE, 0, 1, -1)
PARALLELTABLE("ParallelTable", ScopeType.TABLE_LIKE, 0, 1, -1)
PARAMETRICPLOT("ParametricPlot", ScopeType.PLOT_LIKE, 0, 1, 2)
PARAMETRICPLOT3D("ParametricPlot3D", ScopeType.PLOT_LIKE, 0, 1, 2)
PARAMETRICREGION("ParametricRegion", ScopeType.SOLVE_LIKE, 0, 1, 1)
PLAY("Play", ScopeType.PLOT_LIKE, 0, 1, 1)
PLOT("Plot", ScopeType.PLOT_LIKE, 0, 1, 1)
PLOT3D("Plot3D", ScopeType.PLOT_LIKE, 0, 1, 2)
POLARPLOT("PolarPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
PRODUCT("Product", ScopeType.TABLE_LIKE, 0, 1, -1)
QUADRATICOPTIMIZATION("QuadraticOptimization", ScopeType.SOLVE_LIKE, 0, 2, 2)
REDUCE("Reduce", ScopeType.SOLVE_LIKE, 0, 1, 1)
REGIONPLOT("RegionPlot", ScopeType.PLOT_LIKE, 0, 1, 2)
REGIONPLOT3D("RegionPlot3D", ScopeType.PLOT_LIKE, 0, 1, 3)
REIMPLOT("ReImPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
REPEATINGELEMENT("RepeatingElement", ScopeType.MANIPULATE_LIKE, 0, 1, 1)
REVOLUTIONPLOT3D("RevolutionPlot3D", ScopeType.PLOT_LIKE, 0, 1, 2)
ROOTLOCUSPLOT("RootLocusPlot", ScopeType.PLOT_LIKE, 0, 1, 1)
ROOTS("Roots", ScopeType.SOLVE_LIKE, 0, 1, 1)
RSOLVE("RSolve", ScopeType.SOLVE_LIKE, 0, 2, 2)
RSOLVEVALUE("RSolveValue", ScopeType.SOLVE_LIKE, 0, 2, 2)
SECONDORDERCONEOPTIMIZATION("SecondOrderConeOptimization", ScopeType.SOLVE_LIKE, 0, 2, 2)
SEMIALGEBRAICCOMPONENTINSTANCES("SemialgebraicComponentInstances", ScopeType.SOLVE_LIKE, 0, 1, 1)
SEMIDEFINITEOPTIMIZATION("SemidefiniteOptimization", ScopeType.SOLVE_LIKE, 0, 2, 2)
SERIES("Series", ScopeType.PLOT_LIKE, 0, 1, -1)
SERIESCOEFFICIENT("SeriesCoefficient", ScopeType.PLOT_LIKE, 0, 1, -1)
SINGULARVALUEPLOT("SingularValuePlot", ScopeType.TABLE_LIKE, 0, 1, -1)
SLICECONTOURPLOT3D("SliceContourPlot3D", ScopeType.PLOT_LIKE, 0, 1, 4)
SLICEDENSITYPLOT3D("SliceDensityPlot3D", ScopeType.PLOT_LIKE, 0, 1, 4)
SLICEVECTORPLOT3D("SliceVectorPlot3D", ScopeType.PLOT_LIKE, 0, 1, 4)
SOLVE("Solve", ScopeType.SOLVE_LIKE, 0, 1, 1)
SOLVEALWAYS("SolveAlways", ScopeType.SOLVE_LIKE, 0, 1, 1)
SPHERICALPLOT3D("SphericalPlot3D", ScopeType.PLOT_LIKE, 0, 1, 2)
STREAMDENSITYPLOT("StreamDensityPlot", ScopeType.PLOT_LIKE, 0, 1, 2)
STREAMPLOT("StreamPlot", ScopeType.PLOT_LIKE, 0, 1, 2)
SUM("Sum", ScopeType.TABLE_LIKE, 0, 1, -1)
TABLE("Table", ScopeType.TABLE_LIKE, 0, 1, -1)
VECTORDENSITYPLOT("VectorDensityPlot", ScopeType.PLOT_LIKE, 0, 1, 2)
VECTORPLOT("VectorPlot", ScopeType.PLOT_LIKE, 0, 1, 2)
VECTORPLOT3D("VectorPlot3D", ScopeType.PLOT_LIKE, 0, 1, 3)
ZTRANSFORM("ZTransform", ScopeType.SOLVE_LIKE, 0, 1, 1) |
ParallelTable
should localize variables likeTable
does. Tested in version 2019.2.2.The text was updated successfully, but these errors were encountered: