Closed kmyk closed 3 years ago
たとえば以下のようなコードがあったとする。
def f(n: int) -> int: n = n + 1 n = n + 1 n = n + 1 return n * n
これは変数名が衝突していて面倒なので、内部的には
def f(n: int) -> int: n$2 = n + 1 n$3 = n$2 + 1 n$4 = n$3 + 1 return n$4 * n$4
みたいに変数名を付け替えています。 このときに変数名全体をひとつの文字列として "n$3" みたいにして保持しています。 すると変数名をさらに付け替えるときに "n$3" から "n" を切り出して別の数字を付けて "n$5" にして…となにかと面倒です。そこで ("n", 3) というタプルで持つようにすると実装がきれいになります。
参考: https://hackage.haskell.org/package/template-haskell-2.17.0.0/docs/Language-Haskell-TH-Syntax.html#t:Name
説明
たとえば以下のようなコードがあったとする。
これは変数名が衝突していて面倒なので、内部的には
みたいに変数名を付け替えています。 このときに変数名全体をひとつの文字列として "n$3" みたいにして保持しています。 すると変数名をさらに付け替えるときに "n$3" から "n" を切り出して別の数字を付けて "n$5" にして…となにかと面倒です。そこで ("n", 3) というタプルで持つようにすると実装がきれいになります。
参考: https://hackage.haskell.org/package/template-haskell-2.17.0.0/docs/Language-Haskell-TH-Syntax.html#t:Name