2009-01-01から1ヶ月間の記事一覧

あいまいな文体だし、もう少し正確に記述するべきだと思う

ホメオパシーは「効果が確かめられていない」方法ですらない - Skepticism is beautiful を見ていて感じたこと。「効果があることは確かめられていない」という文はニュアンスとして曖昧さを含んでいるのではないかという指摘をしてみたいと思う。 該当する…

木を見たら、どうぞ森も見ていってください

小倉先生の文面を見ていつも思うのは、やっぱり言葉で勝負する人だよなということだったりする。敏腕の営業担当や詐欺師と同じように、言葉で自分の主義主張を相手に伝えることに特化した姿なのだろうと批判してみるよ。 現実問題としていえば、その種の名鑑…

kuzha から他の処理系を呼び出してみる

kz> runScript: "kuzha" {" > "Hello world" puts; > "}; > Hello world kz> runScript: "rhino" {" > print("Hello world\n"); > "}; > Hello world……これは楽しい!

return break、return continue 問題

kz> try > while true do > try > try > break; > finally > "fin01" puts; > end > finally > "fin02" puts; > end > end > finally > "fin03" puts; > end > fin01 fin02 fin03解決

kuzha 1.0 alpha 3 公開

なんとなく作りかけの部分が多いけど、とりあえずコミットしてみた。ヘルプも整備していかなくちゃなぁ……。 Google Code Archive - Long-term storage for Google Code Project Hosting.

return finally 問題

kz> try > try > return 123; > finally > "FIN01" puts; > end > finally > "FIN02" puts; > end > FIN01 FIN02 --> 123解決

遅延評価の話

遅延評価の話 - SiroKuro Page に関して http://d.hatena.ne.jp/nagaShima/20090127/p3 からツッコミ受けたのでその返答。 最初に断っておきますが、『自分が kuzha に遅延評価を入れるかどうか考えてみる』 という立場で話してあります。Phine に遅延評価を…

純粋関数ってなんだっけ

http://d.hatena.ne.jp/nagaShima/20090129/p1 初めて聞いた。たぶん純粋関数型言語って語句から 『純粋関数をベースにした言語』 って勘違いしているんだと思うけど、正しくは 『純粋な、関数型言語』 ですよ。純粋関数型言語の Haskell だってグローバル変…

finally return の問題って、今の java の仕様が正しいと思う

なぜなら、finally を中断することを禁止することが出来ないから。仮に return, break, continue などで中断することを禁止したとしても、依然として finally から例外が搬出されることを阻止するのは不可能だから。 もちろん、バグの温床になるということで…

TODO

未了 return と finally のコンパイルを作り直す return を areturn じゃなくてリターンシーケンスへ合流する goto にする KuzhaPreprocessor を作る #include #if 〜 #elsif 〜 #else 〜 #end #macro 〜 #end #MACRO_NAME 関数周りの整備 KzJavaFunction に…

try return の話

kz> try > return 123; > finally > "finally" puts; > end > --> 123……あれ?

finally return の話

某所をみて思い出した finally return の問題。まずは finally return から。 kz> try > throw 123; > finally > return 456; > end > --> 456例外が食われた。次は finally break を。 kz> try > throw 123; > finally > break TRY; > end:TRY > Exception …

遅延評価の話

pjss/Phine のひとが遅延評価にえらく拘っているみたいだけど、個人的には遅延評価はあまり好きじゃない。lazy を明示することで計算を省略したり遅延させたりできるのは面白い機能だとは思うんだけど、それで言語自体を肥大化させるほどの面白さが追加でき…

JavaCC って LookAhead 内は LookAhead を無視するの?

kuzha で x++ って入力するとエラーが出ていた件を詳細に調べてみた。 まず、パーサの基幹部はこんな定義。 Statement CompilationUnit():{ Token start; Statement stt; Expression expr; }{ { jj_ntk(); start = token.next; } ( LOOKAHEAD(Expression() <EOF>)</eof>…

JavaCC の LOOKAHEAD にまつわる不思議な挙動

JavaCC って LookAhead 内は LookAhead を無視するの? - SiroKuro Page に関して、実証コードができました。JavaCC4.0 で確認してます。 PARSER_BEGIN(Test) import java.io.*; public class Test { public static void main(String[] args) throws Excepti…

null とオーバーロード(2)

null 自身に型を持たせる方法はお蔵入りすることにしてみた。型持ち null がプログラム内の各所に散らばると挙動が不明になりすぎて困ってしまいます。 その代わり、KzJavaFunction に select メソッドを取り付ける方向で調整します。ある特定のメソッドを取…

null とオーバーロード

kuzha スクリプト内から null を引数に java のメソッドを呼び出すと、そのメソッドがオーバーロードされていたときにどのメソッドが呼び出されるかわからなくなっちゃうので、それを解決しようとあれこれ思案中だったりします。 現在考え中なのが、 null に…

RE: メソッドオーバーロードの動的束縛

cf: メソッドオーバーロードの動的束縛とか - しげるメモ さくっと解決してみた。 import javax.script.*; public class ScriptingDispatch { public static void main(String[] args) throws Exception { ScriptingDispatch obj = new ScriptingDispatch();…

try 〜 finally でちょっと引っかかったところ

try 〜 finally を実装していたら、ベリファイアが Inconsistent stack height を出してきた。何が起きたのかと思ってよく見てみると…… TRY: // try 本体 TRY_END: JSR FINALLY GOTO END CATCH: JSR FINALLY ATHROW FINALLY: ASTORE $EX // finally 本体 RET…

kuzha の後置制御構文

後置制御構文が実装し終わりました。/if /while /for /let /catch /finally /lock /case の7種類があります。 kz> "hi" puts /if 123 == 123; > hi kz> (x = "hi") puts /while x == void; > hi kz> i puts /for i in 0..3; > 0 1 2 3 kz> i puts /let i = …

だいたい変更完了

後置制御構文の文法をちょっと見直し。ついでに /for キーワード追加。あとで /catch, /finally, /lock, /let とかも追加するかも。 kz> i puts /for i in 0..5; > 0 1 2 3 4 5null と void に関係する比較演算子まわりを修正。けど > を ROOT に追加したか…

TODO

未了 case 文のコンテキスト分離 関数周りの整備 KzJavaFunction に select メソッドと callSelect メソッドを新設 無名 KzStruct を許容させる(インデックス演算子とのバッティングをどうするか) KzBigNumber まわりの整備 トレイトをどうするか Converter …

this 引数についてちょっと書いてみる

昨日だか一昨日だかの記事でちょっと出てきた式について解説してみようかなと思い立った。 puts@ obj;これは、変数 obj に入っているオブジェクトの文字列表現を標準出力に出す式です。これに良く似た式は、iolanguage の println メソッドが該当します。thi…

その他の変更予定

そこで今回は、比較演算すべてが可能にしたら良いのではないかと思っている。voidが一番小さく、その次がnull、その次に数値、その次が文字という感じ。 http://d.hatena.ne.jp/nagaShima/20090122/p1 それいいなぁ。頂いちゃおう。kuzha.runtime.Operator#g…

文法変更予定

before Statements := ( ( BlockStatement | ExpressionStatement ";" | ";" ) )* ExpressionStatement := Expression ( ( "@if" Expression | "@while" Expression ) )? | "assert" PrimitiveExpression ( PrimitiveExpression )? | "break" ( <ID> )? | "conti</id>…

for と let 完成

ということで別スコープ版 for 文と let 文を作成しました。 kz> puts@ cnt; > for cnt in 0..5 do > puts@ cnt; > end > puts@ cnt; > void 0 1 2 3 4 5 void kz> puts@ x; > let x = "hello world" in > puts@ x; > end > puts@ x; > void hello world voi…

区切りのない(ように見える)文法

連日すみません。文法的な話が大好きな SiroKuro です。あいあむ文法らヴ。 今回は式の区切り無しの言語にしたんだけど。 return a + 1これと return a + 1これの区別がつかない。よく見なくても当たり前なんだけどね。 http://d.hatena.ne.jp/nagaShima/200…

スコープと無名関数の話(ver俺俺言語)

for 文と無名関数のイディオム - IT戦記 しまった kuzha でも全く同じ問題が出てきてしまう。既存の local を薄くラップして新しい変数を付け加える専用のコンテキストオブジェクトでも作るかな。 問題は sum = 0; for i in 1..9 do sum += i; endの結果、su…

Re: ん?

javascriptってfor文がスコープ作らないってこと? http://d.hatena.ne.jp/nagaShima/20090119/p3 というより var 宣言された変数が全部メソッドスコープにバインドされちゃうという感じです。 kuzha も同じように、変数テーブルは今までメソッド1つにつき…

スコープの話

KzInnerContext を作るなら、ちょっとした構文を追加しても良いかもしれないな。 LetStatement ::= "let" <ID> [ "=" Expression ] "in" StatementList "end"let x = 123 in x puts; endみたいな。</id>