投稿日
2013/9/8 日曜日
LLVMによるプログラミング言語の実装チュートリアル日本語訳
第7章 万華鏡: 言語の拡張: 変更可能な変数(Mutable Variables)
第4節 万華鏡における変更可能な変数
さて、解決すべき問題の性質が分かったので、万華鏡言語のコードとしてどんな感じになるか見てみよう。
我々は今2つの機能を追加しようとしている。
1については、我々が現在持っている”関数の引数のための変数”と”帰納変数(induction variables)”を、再定義可能にするということである。(While the first item is really what this is about, we only have variables for incoming arguments as well as for induction variables, and redefining those only goes so far :).)
同様に、新しい変数を定義する能力は、変数を変化させるかどうかに関わらず有用なものである。
訳注: 帰納変数のための変数とは、for式で定義されるいわゆるループ変数のことである。
# 順次演算子。オペランドを無視する、低い優先順位の演算子として":"を定義する。 # RHSを返す。 def binary : 1 (x y) y; # 再帰的なfib。これは以前から出来ていた。 def fib(x) if (x < 3) then 1 else fib(x-1)+fib(x-2); # 反復的なfib。 def fibi(x) var a = 1, b = 1, c in (for i = 3, i < x in c = a + b : a = b : b = c) : b; # 呼び出す。 fibi(10);
変数の内容を変化させるために、既存の変数を”alloca技法”を使うように変更しなければならない。
それが出来れば、新しい演算子を追加して、変数の定義をサポートするよう万華鏡を拡張する。
最近のコメント
名前
しゅごい
Jane Doe
FYI Avoid Annoying Unexpe…
Jane Doe
ご存じとは思いますが、whileには、”~の間”と…
peta_okechan
針金みたいなパーツを引っ張ると外れます。 他の方の…
虎徹ファン交換
虎徹の標準ファンを外す際に、どのようにして外されま…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…