I am puzzled by the following behavior of Function:
In[1]:= InlineCellInMessage=Function[expr,DisplayForm[Cell[BoxData[MakeBoxes[expr,StandardForm]],"Input"]],{HoldAllComplete}]
Out[1]= Function[expr,MakeBoxes[expr,StandardForm]]
I expected to see unevaluated code inside Function in the output as in the following case:
In[2]:= InlineCellInMessage=Function[x,x+1+1]
Out[2]= Function[x,x+1+1]
But I get the inline cell inside output. Why does this happen?
This is the result of FrontEnd rendering. Consider:
InlineCellInMessage =
Function[expr,DisplayForm[Cell[BoxData[MakeBoxes[expr,StandardForm]],"Input"]],{HoldAllComplete}]
InlineCellInMessage // InputForm
Output:
InputForm[Function[expr, DisplayForm[Cell[BoxData[MakeBoxes[expr, StandardForm]], "Input"]], {HoldAll.Complete}]]
Also, in this use the parameter HoldAllComplete affects future input to the function, not the creation of the function itself. If you want Function itself to have HoldAllComplete you need:
SetAttributes[Function, HoldAllComplete]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With