2005-01-01から1年間の記事一覧

似非Restriction Operators

・The LINQ Project C#3.0とLINQが発表され、各地で盛り上がっているよーですが、仕事で嵌っていて全く情報が集められてません。悔しいのでNemerleで対抗です。よーわからないけど見様見真似。(^^; using Nemerle.Utility; [Record] class Person { [Accesso…

・Nemerle 0.9.0 is out Nemerle 0.9がリリースされました。0.32から一気に0.9へ。そろそろ1.0がリリースかな。

はじめての型推論

ひょっとしたら型推論をサポートする言語を使っていないと、ピンとこないかも知れないので、今更ながらご紹介。次のような、変数x,yを足す関数を定義し、コンパイルします。 def add (x, y) { x + y } すると、当然のごとく、 app.n:2:5:2:10: error: typing…

ジェネリックパラメータの明示的指定

Nemerleには型推論があるため、ジェネリック型を明示的に指定する必要がありませんが、実は明示的に指定する方法もありませんでした。最近やっと可能になったのですが、文法的にちょっとクセがあります。 using Nemerle.IO; class A [X] { public mutable a …

Partial applicationその3

更に色々使ってみる。 def func (x : int, y : string, z : double) : void { System.Console.WriteLine ($"$x,$y,$z"); } // 引数となるタプル def t1 = (1, "two", 3.0); def t2 = (2, 4.0); def t3 = (3, "four"); func (t1); func (_, "three", _) (t2);…

Partial application

日本語では部分適用と呼ぶようですが、関数型言語をやってないと馴染みがないですね。誤解を恐れずに動きだけを言うと、N個の引数を取る関数にM(M def add (x : int, y : int) { x + y; } def add7 = add (_, 7); /* // これと同じ def add7 = fun (x) { add…

Partial applicationその2

引数だけでなく、オブジェクトにも適用出来たりします。 class X { msg = null; public this (msg : string) { this.msg = msg; } public Say (key : string) : void { System.Console.WriteLine ($"$msg, $key"); } } def x1 = X ("Hello"); def x2 = X ("G…

Code Completion

・http://nemerle.org/Code_Completion 最近の目玉機能。ソースコードを食べてTypeTreeを作成します。自前でParserとかこさえる必要が無くなるので、ツール開発者には朗報かも。上記リンクを読むと雰囲気が掴めると思います。ただ、現在開発中の為、サンプル…

散財

・http://www.amazon.co.jp/exec/obidos/ASIN/B0007YT8XY/249-4314563-8109935 つい、クリックしてしまいました。(^^;

仕事

今月が勝負。気合い入れて行かねば。でも、「パラメシウムごときで俺を止めることはできん!」とか、騒いだら白い目で見られるだろうなぁ。というか、ウチの職場じゃ元ネタだれもしらねーよ・・・

9/5

・Nemerle Forums Webフォーラムが出来た模様。ところで、ここ数日、NemerleのMakeが通らず。.NET 2.0 August CTPって結構変わったのかしら?

詐欺との遭遇

時計詐欺に引っかかりました。 ↑今日、これに遭遇。騙されやすい質なんですが、経済力の無さが勝りました。金くれと言われても、財布には30円しかありません。(笑)

boo 0.6 久々にリリース。でも、全然弄る時間が・・・(^^;

リッチなお食事

Tech Edで食券6000円分貰ったんですが、なかなか使う機会がなかったので1回の食事を豪華にしてみることに。古奈屋の1500円カレーうどん(Tech Ed特別セット)を2食。流石に旨いっ・・・けど、カレーうどんで1日3000円ですよ?ありえません! 普段、…

祭りの後

最後の「アーキテクトへの道」まで残ったので帰りは20:00過ぎに。Tech Edは半分仕事の息抜きで参加していたのですが、会場が遠いため、普段より2時間以上早く家を出ることになり、結構辛かったです。(^^;会社向けにレポート書かないといけないのですが、喜ん…

8/5

.NET アプリケーションのパフォーマンスとスケーラビリティの向上 日本語訳が公開された模様。って、セッションT2-404で言っていたのですが。ちょっとずつ訳されていくよーで、次の更新は再来週あたりらしいです。

??演算子

C#

nullableだけでなく、普通の参照型にも使えることを今日はじめて知りました。(^^; using System; class Program { static void Main(string[] args) { string s = null; Console.WriteLine(s ?? "Empty"); } } /* 結果 Empty */ その他にも色々面白い話が聞…

nullableの変更

C#

Tech・Ed 2005 Yokohama初日。C# 2.0 and IDE Tips & Tricks Part I C#2.0はそれなりに分かっているつもりだったのですが、C#コンパイラ開発現場の方が講師でしたので、こぼれ話に期待して参加しました。(笑)ネタにしても構わないとのことでしたので、お言葉…

IME関連

Aleaさんのとこから(http://d.hatena.ne.jp/alea/20050715#p1)。 コンソールアプリ中でウィンドウハンドルを渡すという話があったので、コンソールウィンドウにユニークなタイトルを付けてFindWindowでハンドルを入手してみたけど、Imm系の関数呼び出しは失…

.NET2.0対応版

現在、Nemerleプロジェクトは.NET2.0のGenerics対応がメインになっているようなので、そっちを追っかけてみることに。ところが、このGenerics版は.NET2.0β2にバグがあってSVNからチェックアウトしたMonoでないとビルド出来ません。そのMonoもcscだとWin32Exc…

Null参照からメソッド呼び出し

先ずはサンプルから。 using namespace System; ref class Calculator { int dummy; public: // インスタンスメンバにアクセスしない void add() { Console::WriteLine("add"); } // インスタンスメンバにアクセスする void subtract() { dummy = 0; Console…

covariant の戻り型

C++で出来てC++/CLIで出来ないことをちまちま調査。 ref class B { public: virtual B^ clone() { return gcnew B(); } }; ref class D : B { public: virtual D^ clone() override { return gcnew D(); } }; void main() { D^ d = gcnew D(); D^ d1 = d->cl…

svnからのビルド

なんか、cscで失敗する。それだけならいいんですが、データ実行防止(DEP)に引っかかる。Althon64な所為? 取りあえずMSにエラー報告を送信してみた。(^^;

STL.NETはC#から使えるか?

そろそろ話題も無くなってきたのでネタ企画。(^^;まず、テンプレートライブラリはヘッダで提供されているので、当然C#から使えないのでコンパイルしてアセンブリにしなければなりません。また、STL.NETのクラスはプライベートな型になっていてアセンブリの外…

STL.NETとコレクションの相互運用

STLは素晴らしいライブラリですが、.NET Frameworkにもコレクション(System.Collection.Generic)があり、C++/CLI以外の言語も使う場合にはコレクションを使った方が何かと都合が良かったりします。STL.NETではその辺にも配慮されています。 void test() { ve…

コマンドラインからコンパイル

今頃する話題なのか?(^^;exeを作る $ cl /clr:safe /Fexxx.exe yyy.cpp dllを作る $ cl /clr:safe /LD /Fexxx.dll yyy.cpp /clrだけでマネージドなアセンブリになりますが、Monoで実行するには/clr:safeにする必要があります。(詳しく調べてないけど・・・)…

STL.NET - vector

http://www.microsoft.com/japan/msdn/vs05/visualc/stl-netprimer.aspを読みながらSTL.NETでも弄ってみようかと思ってましたが、なんか上手く行かないです。cli/vectorがcliext/vectorになっているとかはいいのですが、 sort( &arr[0], &arr[ arr->Length ]…

インタフェース

C++/CLIだとインタフェースの明示的実装に制限がありそ。それともバグかしら? しかし、インタフェースの明示的実装周りはWorking Draft1.9(2005/1)と結構変わっています。まだ、言語仕様固まってないのかなぁ・・・ #include "stdafx.h" using namespace Sy…

続インタフェース

プロパティを含んだインタフェース。あと、プロパティのアクセス修飾子も。 #include "stdafx.h" using namespace System; interface class IFoo { // getのみ property int Bar { int get(); } // setのみ property int Baz { void set(int value); } // ge…

クラス色々

なんか間違って消してしまったので貼り直し。(^^;C#と同じくらい簡単に書けるよーになった云々とか書いた記憶が。イベントをいちいちnullptrチェックしなくていいのは良いですね。 #include "stdafx.h" using namespace System; // デリゲート delegate void…