Note

サイト
最近のコメント
 | 

2011-08-20 家の前で交通事故がありました

[] Ada2012で追加される文字判定サブプログラム

http://www.ada-auth.org/standards/12aarm/html/AA-A-3-2.html

Is_Line_Terminator, Is_Mark, Is_Other_Format, Is_Punctuation_Connector, Is_Spaceが追加されます

Unicodeカテゴリともちょっと違うようですし(ていうか素直にIs_XXXをUnicodeカテゴリの全種類分並べるだけではなぜダメだったのか)、下の方の説明を読んでもいまいちピンと来ないのですが、{AI05-0185-1}のリンクをたどるとこの正体が明らかになります。

The current version of the GNAT compiler has defined the following implementation-defined packages;

http://www.ada-auth.org/cgi-bin/cvsweb.cgi/ai05s/ai05-0185-1.txt?rev=1.7

まじか……。

文字コードに対するAdaCoreのナンセンスさ加減はcomp.lang.adaでもある程度共有された認識だと信じていたのですが。

ということで、a-zchuni.adsを読むとこれらのサブプログラムの正体がわかります。

サブプログラム 対応するUnicodeカテゴリ
Is_Line_Terminator Zp(Paragraph_Separator), Zs(Space_Separator), 0a-0d(LF, VT, FF, CR)
Is_Mark Mn(Nonspacing_Mark), Mc(Spacing_Mark) *1
Is_Other(_Format) Cf(Format)
Is_Punctuation(_Connector) Pc(Connector_Punctuation) *2
Is_Space Zs(Space_Separator)

名前ぐらいUnicodeカテゴリを正確に反映しろよ……っていうか私Unicode詳しくないんですが、MnとMcだけを判定したくてMeを除きたいような用途ってなんかあるんでしょうか?詳しい人がいましたら教えて下さい、お願いします。

流し読みですが、Is_Punctuation_ConnectorのほうはRandy大先生が_Connectorを追加させた様子。a-zchuni.adsのIs_Punctuationのままですと、P系カテゴリ全部含むと誤解しちゃいますもんね。とりあえずその程度には元のa-zchuni.adsは酷い。

で、Handlingのサブプログラムは、Maps.Constantsのほうに対応する集合が定義されてるはずなんですが、まだ追加されてないです。

http://www.ada-auth.org/standards/12aarm/html/AA-A-4-6.html

要するに他のベンダーはこんなの実装せずに無視しろってことですよねわかります。

[] ところで

http://www.ada-auth.org/standards/12rm/html/RM-A.html

を眺めていて、Wide_やWide_Wide_バージョンが必要な大抵のpackageはAda.直下にWide_なんとかがあるのですが、StringsだけAda.Strings.Wide_なんとかの形になる(他と同じならAda.Wide_Strings.なんとかになるはず)のが気になって夜も眠れないのは私だけでしょうか?

*1:Me(Enclosing_Mark)は含まれない

*2Pd, Ps, Pe, Poは含まれない

2011-08-15

i-knowサービス休止

http://blog.i-know.jp/archives/2011/08/04/i_know_suspend/

今までお世話になりました。

細かいことなんですが、各rssから最新の1件だけを取り出してひとつのrssにまとめてくれるのが便利だったんですよね、i-know。

さて、どこに移行しよう……。(というのをはてなダイアリーに堂々と書く)

2011-08-04 にわか雨

本当は天気を書いておきたかっただけ

にわか雨がいつ降るかわからないので出かけられない。(言い訳)

[] たまにはOOP

定期的にAda 95のRationaleを読み返したくなります

http://web.archive.org/web/20020607043031/http://www.tsujiken.ee.kogakuin.ac.jp/jada95_02.html

このRectangle(四角)からCuboid(立方体)を派生させる例、OOPの入門としては犬猫動物並によくあると思うのですが、やっぱ間違ってますよねー。

そもそも2次元のものと3次元のものを混ぜていいのかというのをさて置いて全部3次元空間上のオブジェクトとして考えると、RectangleはCuboidの特殊な場合(Height = 0固定)ですので、Rectangle is a Cuboidですよねー。

でもRectangleにHeightを持たせたくないのは確かですので、こう。

type Any_Cuboid is abstract tagged
   record
      Length, Width : Float;
   end record;
function Get_Height (Item : Any_Cuboid) return Float is abstract;

type Rectangle is new Any_Cuboid with null record;
overriding function Get_Height (Item : Any_Cuboid) return Float is (0.0);

type Cuboid is new Any_Cuboid with
   record
      Height : Float;
   end record;
overriding function Get_Height (Item : Any_Cuboid) return Float is (Item.Height);

この手の逆転の間違いを犯してるのは結構あって、例えばimmutableなNSStringからmutableなNSMutableStringが派生してるとか……。(immutableと確信できる継承階層が無いので毎回copyしないとけない……どうせデータ本体はCOWで共有されてると思うけど←想像)

 | 
カレンダー
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 |
Connection: close