Possible Duplicate:
What is the most convenient way to read definitions of in-memory symbols when we don’t have the source files?
I would like to look at the code that implements FillingTransform
. Does Mathematica provide any way to do this?
Possible Duplicate:
What is the most convenient way to read definitions of in-memory symbols when we don’t have the source files?
I would like to look at the code that implements FillingTransform
. Does Mathematica provide any way to do this?
In general, @Jacob Akkerboom is correct: one cannot usually view the source code for arbitrary Mathematica functions. In this particular case, however, we find an exception.
By doing:
FillingTransform (* trigger auto-load *)
ClearAttributes[FillingTransform, ReadProtected]
Begin["Image`MorphologicalOperationsDump`"]
Information[FillingTransform]
we observe a call to iFillingTransform
(i.e. the implementation of FillingTransform
; this naming convention is commonly encountered among recently added functions). Thereafter,
Information[iFillingTransform]
reveals a number of checks on the arguments and setup for a call to oFillingTransform
. If one does
Information[oFillingTransform]
then the complete implementation becomes visible. Although I won't reproduce that here for obvious reasons, the basic idea is a combination of GeodesicErosion
and GeodesicDilation
with some image arithmetic to mask off each hole in turn.
Spelunk
yielded interesting information ? Mapping it like here Spelunk /@ ToExpression@Names["System
*"]` is not a good idea.
$\endgroup$
ReadProtected
is mainly implemented in Mathematica code and you can access its source by removing the attribute (as in Oleks' answer). There are of course those readprotected functions that simply call another function that is fully concealed. There is little hope that someone is able to reverse-engineer these functions just by observing their behaviour. $\endgroup$