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

継続

継続を使えるようにしました。svn上のプログラムを落とせば使えます。継続は current_continuation で取得します。current_continuation は 継続オブジェクトとユーザーが渡した値の二つの値を返します。継続オブジェクトを関数呼び出しすれば、current_cont…

LR

地獄の猫日記 http://d.hatena.ne.jp/nokturnalmortum/20070528 xtalでreducelとreducerの実装 マニュアルが少ないのにこうして試していただけるってのは感動モノです。 neko : range(1, 2); neko { it.p; } neko { it.p; }これやると一個しか数字出力されな…

else nobreak

Xtalはループ文にelseをつけることが出来ます。このelseは、Pythonのループ文に付けられるelseと意味が異なります。Pythonのelse節は、ループ継続条件文がfalseになったときに、つまりループ本文中にbreak等でループを脱出しなかった場合に実行されます。 Xt…

はてなグループの件

管理人が承認しないと入れない設定になってました。 承認せずとも入れるよう設定いたしました。もうしわけありません。

東京

6月の中ごろから東京なので、引越しの準備を色々としています。 先日東京に家を探しに行きました。東京は家賃が高いのでこれから大変になりそうです。 大田区の京急沿線の物件に決めました。しかし、フリーターの方は平均月収が約12.5万円という話なのに、東…

■[xtal]C++でxtalのIteratorを定義する

http://d.hatena.ne.jp/toge/20070524#1180029956 C++側の説明は全然足りないのにスゴイです。 たぶん、AnyImplを継承するところと、コンストラクタでset_classするのがポイントっぽい。AnyImplを継承してもいけるのですが、継承しなくてもいけます。頑張っ…

404 Blog Not Foundより

http://blog.livedoor.jp/dankogai/archives/50839102.html そしてblogという誰でもアクセスしうる環境でreleaseしたというのは「ご意見お待ちしております」のサインと私は解釈しました。 そうですね。ブログは、言語仕様が割と安定した頃から始めたので、*…

Matzにっきより

http://www.rubyist.net/~matz/20070523.html#p02おー。Ruby作者のまつもとさんからも言及がありました。 でも、メジャーになるには冒険しすぎかもしれないと思ってしまうのは私が年を取って安定指向になってきたせいかしら? 自分ではそんなに冒険してるつ…

マニュアルちょっと書き直しました

多くの方が来訪してくれてるので、ドキュメントをちょっと書き直してキレイにしました http://www.h5.dion.ne.jp/~putora/xtal_doc/index.htm

グループ

よく見たら、アクセスや被リンク数がめちゃめちゃ増えてます。404 Blog Not Found http://blog.livedoor.jp/dankogai/archives/50836939.htmlおー。 ソースを見て、最初WindowsでVCな人しか対象にしていないのかと思ってorzとなりかけましたが、たった二カ所…

便利なイテレータメソッド

Iteratorクラスには次のような便利なメソッドが用意されています。Rubyと違い、mapなどは配列を返さず、再びイテレータを返します。これらのメソッドは、所謂デザインパターンで言うDecorator パターンとなっています。ではサンプルです。 100.times //Integ…

boost::lambda風無名関数

fun(x){ return x+5; } を @1+5 と書ける機能です。 fun(x, y){ return x*y; } を @1*@2 と書ける機能です。 // 偶数だけ取り出して配列としてプリントする [4, 5, 8, 3, 7, 2].select(fun(x){ return x%2==0; }).to_a.p; ↓ [4, 5, 8, 3, 7, 2].select(@1%2=…

ヒアコード

思いついたけど、とりあえずボツにした構文の紹介です。 将来復活するかもしれません。 Rubyなどにはヒアドキュメントという機能があります。 http://www.ruby-lang.org/ja/man/?cmd=view;name=%A5%EA%A5%C6%A5%E9%A5%EB#a.a5.d2.a5.a2.a5.c9.a5.ad.a5.e5.a5…

0.9.4.4

またバグ修正してアップしました。 xtal::debug::の件 need_return追加 コンパイルエラーが正しく表示されないバグ修正 Mapクラスの連結(map ~ other)のバグ修正

0.9.4.3

0.9.4.3としてソースとウインドウズバイナリをzipで固めたものをアップしました。 http://code.google.com/p/xtal-language/downloads/list 最新のソースはsvnでも取れます。変更点は次の通りです。 Iterator強化 多値の仕様変更(一つの値が要求されるところ…

メモ

Pythonでは、関数内でyieldを使うと、その関数が自動的にgenerator関数となりますが、Xtalはそうなっていません。 何故自分でfiberを返す記述が必要な仕様になっているのかというと、次のようなことを可能にするためです。 foo: fun(){ return fiber{ // 引…

オリジナルのIteratorを定義する

イテレータの使い方は何度も書いてきましたが、今回はその定義方法を書きます。 XtalのIteratorは次のメソッドを定義する必要があります。5/19 iter_firstの意味を若干変更しました。 iter_next: method() 次の要素を指すイテレータと値を多値で返す。 この…

lib

libオブジェクトはライブラリの管理等を司るオブジェクトです。~ Test: lib::Test; // lib::Testが存在しなければ、Test.xtalをロードする // libのFooとして定義する lib::Foo: class{ }

Erlang

なんか、とてもあちこちでErlangが話題になってるんですね。Xtalは関数型言語というかErlangのようなモノを目指していた時期がありました。 変数は再代入できなかったり*1、配列などもimmutableで*2、副作用も文も無く全て式だったり*3していました。 しかし…

多値の仕様変更

Xtalは関数から多値を返すことが出来ます。 foo: fun(){ return 0, 1, 2; } a, b, c: foo(); a.p; // 0 b.p; // 1 c.p; // 2 今までの仕様では、一つの値だけ必要としているところで多値を返す関数を呼ぶと、最初一つの値だけを受け取り、後は全て捨てていま…

イテレータ

XtalはRubyのような 100.times{ |i| println(i.to_s); } という要素繰り返し構文があります。Rubyではメソッドにブロックを渡す内部イテレータ方式ですが、XtalではメソッドがIteratorオブジェクトを返し、それを反復するという外部イテレータ方式を採用して…

Windows用のバイナリを用意しました

http://code.google.com/p/xtal-language/downloads/list xtal.exe はスタンドアロンのXtalインタプリタです。 スクリプトファイルを渡すとそれを実行します。 使い方: xtal [options] [script [args]]. Available options are: -v show version information…

zip関数

zip関数は、複数の配列やイテレータをとり、それらを同時に反復するイテレータを作成して返します。 複数の配列をイテレータを同時に反復したい場合に使います。例えば配列の要素と同時に、インデックスも同時に得たいという場合、zipを使えば次のように書け…

switch追加

今日はswitchを追加しました。 switchはC言語と少し構文が異なります。 xtalのswitchは次のような形となります。 switch(value){ // valueが"test"と等しいとき実行される case("test"){ "test".p; } // valueが10と等しい、または20と等しいとき実行される …

7月からは東京へ

現在大阪で働いているのですが、いろいろありまして、7月からは心機一転、東京で働くことになりました。 大阪にいる関係上、これまではプログラマのoff的なもの*1に行った事がなかったのですが、東京に行ってからは、いろいろ出てみたいなーと思ってます。…

GW明け

GWも終わりました。 で、さっそく型指定を試してみようと思いましたが、その前にパーサやコンパイラ部分をもうちょっとすっきりさせようと思い、格闘中です。

型指定をどうするか

型指定を望む人は多いと思われるので、xtalには型指定を入れようと思っています。ただ、入れるとしても実行時に型チェックを入れるぐらいのサポートになりそうで、本当にそんなのを入れる価値があるか悩んでます。型指定の文法はC言語と同じようにする予定で…