I will provide one example to show what the problem is.
Collatz[m_] := Collatz[m] = 1 + If[EvenQ[m], Collatz[m/2], Collatz[3 m + 1]]; Collatz := 0;
this function works as expected but if I make a new function
myfunction[m_] := m
this generates and error
error: m is protected
f[# _] := # f
but the output is
expected output is
I know I can use anonymous pure functions inline like
but what if I want anonymous variable names that do not stay in memory? I want the function to be defined by name but I do not want to create more protected or reserved words inside the function arguments when I am defining the function. is there a way to use # or #_ to define a function without creating more protected variable names? is this possible in mathematica?