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

Delphiで関数内関数を関数ポインタとして引き渡す

僕が愛用しているEOFile作者さんのところに、こんな記事があるのですが、 http://hp.vector.co.jp/authors/VA028375/delphi/delphipascal_xx_lambda.html ここまで手の込んだことをしなくても、単純な関数ポインタとして関数内関数を渡すことは実はそんなに…

オブジェクト指向って

オブジェクト指向ってそんなに便利かね?と思って。 Concurrent Cleanを使い始めて、関数型言語の世界からプログラミングを見るようになってから、オブジェクト指向に対する考え方がだいぶ変わってきたような気がします。 オブジェクト指向でもっともよく使…

JavaScriptで関数型言語っぽいことができるという話

http://www.interq.or.jp/student/exeal/dss/ejs/ JavaScriptでは、「関数=オブジェクト」なので、変数に関数を代入(束縛)することができて、関数を返す関数も普通に作成できるのです。上手く書けば、カリー化っぽいこともできそうです。 このサイトを読…

ここのところ忙しすぎるんですが・・・

Blogを書く暇もない。 今日は、一ヶ月の清算をして、家計簿をまとめました。

Delphiはオシイ・・・

あれこれと、発展させれば便利になりそうな仕様を持っていながら、中途半端に実装しているせいで、結局仕様を汚しているだけになっているような気が・・・。Pascalは、簡潔な仕様なところが強みだったはずなのに、Delphiの複雑さはCをもしのぐのではないか?…

scala と タプル

scala(http://scala.epfl.ch/)にタプルがあるかと調べてみたのですが、ないっぽい。 Pairというgeneric classを用いて、代用しているようです。

関数型言語のよいところ

「美しい」(*1)とか言うのはなしにして、関数型言語の実際的なよいところを考えてみる。(Concurrent Cleanの文法を念頭においているので、他の関数型言語だと当てはまらないかも。) 型推論によって、静的型付けにも関わらず、ローカル変数を宣言なしに使え…

関数の定義域と値域の指定 - delphi

[id:lethevert:20050719:p2]の続き。 そういえば、delphiは、「1..10」みたいな型が指定できたな、と思い出したので、試してみました。 type TOneToTen = 1..10; TOneToTwenty = 1..20; function DoDouble(src:TOneToTen):TOneToTwenty; begin Result := 2*s…

Concurrent Clean

日本語化したコンパイラを公開しました。 http://www.geocities.jp/lethevert/softwares/clean/localize.html

Concurrent Clean + Compilerの日本語化

scanner.iclの「ScanString n chars input」が怪しいです。 この辺からチェックしていきます。 - 結局、scanner.icl内で, ScanBSChar n chars input cont ScanCharList n chars input ScanString n chars input の3つを修正して、日本語文字列が正しく処理…

Concurrent Clean + CodeGeneratorの日本語化

C言語の型キャストが全然分からない・・・。てか、getcの動きが分からない。ドキュメントには、getcはunsigned charで読み込んで、intに変換して返すと書いてあったのに。あ、Microsoftには、読み取った文字を int 型で返すと書いてある。gccでも、-mno-cygw…

Concurrent Clean

Concurrent Cleanの池田さんのサイト(http://sky.zero.ad.jp/~zaa54437/programming/clean/)から、リンクが貼られていました。 日本語化、がんばらねば。 - キーワードに登録してみました。

Concurrent Clean + CodeGenerator日本語化

やっぱり、ポイントは、parse_string_characterで合っているようです。しかし、なにか大きな思い違いをしているような気が・・・

Concurrent Clean + CodeGeneratorの日本語化

abcファイルを直接編集して、文字列リテラルの解釈が正しく行われているかを確認した。 が、・・・上手くいかない。 エラーメッセージを見ると、cginput.cの「static int parse_line (void)」で止まっている模様。

定義域・値域の詳細指定(もうひとつの「Design by Contract」)

[id:lethevert:20050717:p1]の続きです。 例外処理に対する問題提起から始まって、「Design by Contract」の概念を経て、「定義域・値域の詳細指定」という概念に至ったこの議論を実装するには、いくつかの方法が考えられる。Javaを対象として実装するとすれ…

Concurrent Clean + CodeGenerator の日本語化

cginput.cを修正したのに、上手くいかない・・・ ところで、Cleanのコンパイルの様子は、こちら(http://www.cs.ru.nl/~clean/About_Clean/about_clean.html)に詳しかったりします。 - 分かった。やっぱり、コンパイラとコードジェネレータで2回文字列リテ…

dependent typeとepigram

[id:lethevert:20050717:p1]でyubさんからいただいたコメントを見て、「dependent type」と「epigram」について調べてみました。 epigram : http://www.dur.ac.uk/CARG/epigram/ 参考)http://en.wikipedia.org/wiki/Epigram_programming_language 参考)htt…

Concurrent Clean - CodeGeneratorの日本語化

cginput.cの「static int parse_string (char *string,int *string_length_p)」で、文字列リテラルを解析しているようです。で、ここから「static int parse_string_character (char *c_p)」を呼び出して、実際の解析は、こちらの担当のようです。 - ところ…

例外処理 - るとさんの投稿への返事

id:lethevert:20050715:p1 の記事に対して、るとさんからいただいたコメントに対し、ちょっと考察しようかなと思います。(コメント中に、(*1)という形で、マークをつけています) # ると 『はじめまして。トラックバックを送れる環境にないのでコメントで失…

Concurrent Clean + リソースファイル

下のようなコードを書いて、これとresファイルをリンクして、exeを作って、それをリソースファイルとして指定したら、Cleanのプロジェクトのコンパイルが成功したよ。ここらへんの理屈が、まだよく分からないけど、とにかく、Cleanでリソースファイルを使う…

Concurrent Clean 日本語版 公開しました。

http://www.geocities.jp/lethevert/softwares/clean/localize.html ひとまず、IDEとライブラリについて、公開しました。コンパイラについては、しばらくお待ちください。 Concurrent Cleanの公式ホームページからリンクしていただきました。(ちょっと、公…

Concurrent Clean コンパイラの日本語化

目下、コンパイラの日本語化に取り組んでおります。とりあえず、攻略すべきは、文字列の中のダメ文字「ソ」を正しく取り扱えるようになること。 で、今、詰まっているのは、どのソースが、信頼できる最新のソースなのかということ。てか、公式ホームページか…

Eiffel "Design by Contract" - 『契約による設計』

[id:lethevert:20050715:p1]にいただいたid:emeitchさんのコメントを見て、Eiffelというプログラミング言語を調べてみました。でも、あまり情報がないようです。"Design by Contract"についても、Eiffelでどのように実装されているかよりも、Javaでどのよう…

例外処理

id:lethevert:20050714:p2 の続き。 Javaなどで使われている例外処理の機構だけれど、どれだけ書いても好きになれないのは僕だけなのでしょうか?例外が発生した時点で、例外を検知してより後のコードへジャンプして、そこで例外処理を書くというアイデアそ…

Groovyで関数型言語っぽいことができるって話。

http://d.hatena.ne.jp/m-hiyama/20050509 http://d.hatena.ne.jp/m-hiyama/20050510 でも、関数型言語っぽく使いたいなら、Scala(http://scala.epfl.ch/)を使う方がいいんじゃない?って、Scalaをまだ試してないけど。 そういえば、クロージャってRubyにも…

Concurrent Clean + リソースファイル

えと、rc -> res -> rsrcのわけなのですが、 Cleanのリンカは、ECOFF形式のオブジェクトでないと、リンクできないので、res -> rsrcの過程でフォーマットを変換してるのかも。 じゃあ、gccを使って、同じようなことをやってみれば、上手くいくんじゃない? …

なんとなくつっこんでみるねすと

C言語でgotoを使うべきかっつう話です。元ネタはこちら http://d.hatena.ne.jp/tanakh/20041002 http://d.hatena.ne.jp/SaitoAtsushi/20050110/p1 そういえば、Linuxのカーネルにもgotoが多いってんで批判している人がいたような・・・ 僕の考えでは、C言語…

Concurrent Clean + リソースファイル

ソースに同梱されていた makeresource.bat には、以下のように記述されている。 rc -r -dWIN32 winIde.rc link -out:winIde.rsrc dummy.obj winIde.resつまり、rcファイル → resファイル → rsrcファイル という流れ? rcファイル → resファイル は、mingwのw…

Concurrent Clean + リソースファイル

Concurrent CleanのIDEとライブラリの日本語化の成果を公開しようとしていますが、表示されるバージョン情報を変更する方法を考えています。どうやら、rsrc形式のリソースファイルがリンクできるのですが、私の環境でrsrc形式のリソースファイルを作成するに…

Java VM上で動く関数型言語

http://scala.epfl.ch/ まず、Scala。これは、Java VM上と.NET上で動作する、オブジェクト指向と関数型の2つの特徴を持った言語です。また、XMLをネイティブに取り扱うこともできます。scalaの文法は、Javaの文法とは見た目から違います。scalaというコマン…