noopでフィボナッチ数列
whileループが実装されました。
4c84f065ce - noop - Project Hosting on Google Code
まだ比較演算子ができてない状態なので、10回実行されるループ文みたいなのは書けないみたいです。
無限ループとか
while(true){ ... }
一度も実行されないループしか書けません。
while(false){ ... }
と思ってたら、新しいサンプルが追加されてて、一度だけ実行されるwhileループのサンプルがありました。
Boolean b = true; while(b){ console.println("Hello World!"); b = false; }
なるほどなー
あれ?そういえば変数はデフォルトでfinalになるんじゃなかったっけ?!その辺はまだ実装されていないのか。
フィボナッチ数列
ループが書けるようになったので、無限ループ上等でフィボナッチ数列を出力するコードを書いてみました。
import noop.Application; import noop.Console; class Fibonacci(Console console) implements Application { Int main(List args) { Int prev = 0; Int curr = 1; Int next = 1; while(true){ console.println(curr); next = curr.plus(prev); // 「next = curr + prev;」と同じ prev = curr; curr = next; } return 0; } }
実行結果
target>scala -cp classes;resources;"%HOME%\.m2\repository\org\antlr\antlr\3.1.1\antlr-3.1.1.jar" noop.interpreter.InterpreterMain Fibonacci resources\stdlib resources\helloworld 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 1836311903 -1323752223 512559680 -811192543
おおー
思ったこと
まだ実装途中のようで、できないことがいっぱいあるのだけど、その制約が逆に面白くなってきました。できることが段々増えていくのを見てるのも楽しいです。
「Intクラスにeqメソッドがあればいいのになー」と思い、自分で書いてみようと思ったのだけどよくわからなくなって諦めました。無念です。