数値を受け取り、それを指定されたとおりに文字列として返す関数が必要だとします。以下は機能しません。
SetAttributes[foo, HoldAllComplete];
foo[x_] := ToString[Unevaluated@x]
foo[.2]
との出力foo[.20]
は同じです。
これを行う理由は、区切り記号としてドットを使用した日付を理解できる関数が必要だからですf[2009.10.20]
。これは Mathematica の奇妙な乱用であることは理解していますが、私はドメイン固有言語を作成しており、eval (ToExpression) を実行するだけでそのパーサーとして Mathematica を使用したいと考えています。2009.01.02 のように 2 桁の日と月に頼ることができれば、実際にこれを機能させることができますが、2009.1.2 も許可したいので、上記の質問に要約されます。
唯一の答えは、文字列として渡してから解析することだと思いますが、おそらく私にはわからないトリックがあります。これはこの質問に関連していることに注意してください: Mathematica: Unevaluated vs Defer vs Hold vs HoldForm vs HoldAllComplete vs etc etc