てきとう

てきとう

Ada

incompleteの追記というか何か

Ada

どうやらC++では既に16年前の標準化時に弾かれてた話で、C++11では未定義だけれど実装によって(Boostで)は動く、と。*1 *2 http://www.boost.org/doc/libs/1_54_0/doc/html/container/containers_of_incomplete_types.html まぁC++でいけるなら、次のAdaで…

最近3ヶ月のまとめ

Ada

ちまちまRationale読んでましたが、折角incomplete typeがgenericの引数に取れるようになったのにAda.Containersは相変わらず type Element is private; とか type Element (<>) is private; で役立たずなんですが…サイズ確定しないからしょうがないのかな……

'Firstからやりなおし:現実逃避編

Ada

色々疲れたので現実逃避。 「関数プログラミングの楽しみ」という本がありまして。*1 関数プログラミングの楽しみ作者: Jeremy Gibbons and Oege de Moor,山下伸夫出版社/メーカー: オーム社発売日: 2010/06/23メディア: 単行本(…

1からやり直し:hello, world編

Ada

基本 with Ada.Text_Io; procedure Hello is begin Ada.Text_Io.Put_Line("hello, world"); end Hello; 応用:use with Ada.Text_Io; use Ada.Text_Io; procedure Hello is begin Put_Line("hello, world"); end Hello; 応用:renames with Ada.Text_Io; pro…

【テスト】Mountain LionでGCCを--enable-languages=adaでビルドしてみた記憶【コピペ】

Ada

*1 お久しぶりですが別に何もありません。いつも通りのダメ人間です。 適当にやってもできなかったけど適当に調べたらできたので記録というか記憶をメモ。 記憶なので細かいところ違うかと。 用意するもの 動くGNAT。今回はgnuadaの4.6.0を使用。 gccのソー…

Mountain LionでGCCを--enable-languages=adaでビルドしてみた記憶

Ada

お久しぶりですが別に何もありません。いつも通りのダメ人間です。 適当にやってもできなかったけど適当に調べたらできたので記録というか記憶をメモ。 記憶なので細かいところ違うかと。

ダイナミックディスパッチを捨てる方法(おまけ)

Ada

Adaだとどうするん?と思って適当にそれっぽいコードを書いたところ、普通にキャストすれば良さそうな感じ。*1 with Ada.Text_Io; procedure Dsp_Test is package Bs is type B is tagged null record; procedure Method(Obj: in out B); end Bs; package bo…

Gem #3

Ada

http://www.adacore.com/2007/05/28/gem-3/ 「limited typeを返すような関数が書けるよ!」 #1と#2から、limited typeにも代入できるようになったので関数が使えるようになりました。 中身の説明が興味深い。 In this case, Rumplestiltskin_Is_My_Name is a…

バグなのか良くわからないのでとりあえずメモ

Ada

null=Hoge'Access でGNATが落ちる…

Gem #2

Ada

http://www.adacore.com/2007/05/21/gem-2/ 「aggregateで型の既定値使えるようにしたよ!」 #1の例で相変わらずZはエラーですが、Bの初期値として<>を与えることで、 X:T; -- 正しい。X.A=42, X.B='@' Y:T := (A=>99, B=>'0'); -- 正しい。 X.A=99, X.B='0'…

Gem #1

Ada

http://www.adacore.com/2007/05/14/gem-1/ 「limitedでもaggregate使えるようにしたよ!」 例えば、以下のTとX,Y,Zを考えたとき、 type T is limited record A:Integer:=42; B:Character:='@'; end record; X:T; Y:T:=(A=>99,B=>'0'); Z:T:=(A=>64); Ada95…

Tagged recordのメンバにUnbounded_Wide_Wide_Stringを含めるとコンパイルできない

Ada

~/ada% cat test.adb with Ada.Strings.Wide_Wide_Unbounded; procedure Test is type Test_Type is tagged record A:Ada.Strings.Wide_Wide_Unbounded.Unbounded_Wide_Wide_String; end record; begin null; end Test; ~/ada% gnatmake test.adb gcc -c tes…

Ada Lovelace Day

Ada

だそうで。もう世界の大半では終わってるような気もするけど。 Ada Lovelace Day is an international day of blogging to draw attention to women excelling in technology. へー。 …つまり、お呼びじゃないってことね。 まぁ書いたから参加はしてるのかな…

いつの間にかMacportsにGNATが来ている件

MacportsもNewsのRSS購読してるだけだし、comp.lang.adaとか全く読んでないので全然知らなかった…。 せっかくだからcomp.lang.adaも購読しとこう。

どうでもいい話その2

Ada

ARMのAnnex Eに分散環境の話があったので読んでいたところ、package System.RPCなるものの情報をget。 ワクワクしながら、GNATの$(lib)/adainclude/s-rpc.adsを見たところ、 -- Note: this is a dummy implementation which does not support distribution. …

どうでもいい話

Ada

とあるJavaのソースコードを見てたら、 while(condition){ if(other_condition){ : }else{ : }/*end if*/ }/*end while*/ というようなコメントの使い方ばかりだったので、「これならAda使った方がマシじゃないか?」と思ったり。

Ada Hackathon

Ada

id:ytqwertyさんに触れていただいていたので。 開催は知ってたのですが、能力不足*1で躊躇していたところ、年末年始で色々あって、気がついたら開催日時が外せない日と重なってしまったのでした。 …その間にWhitespace実装したりAdaのメモとか書いたりしてま…

Adaにおける浮動小数点数 floating point

type FooBar is digits Baz; こんなん。オプションでrange Foo..Barとかがついたりする。付けた場合、値はその範囲に束縛される。 実装の中身については、当然ながら特に決まりはない。 ただし、BazはSystem.Max_Base_Digitsの値を越えてはいけない。 さらに…

Adaにおける実数

浮動小数点数 floating point と固定小数点数 fixed point の2種類。 共通の属性は(恐らく)無い。

Adaにおける正負なし整数型 modular integer type

type My_Modular is mod 256; みたいなやつ。この場合、取り得る値の範囲は0..255。ただし、 type My_Signed is range 0..255; と書くのとはちょっと違う。 N:My_Signed:=256; はエラーになるが、 N:My_Modular:=256; はエラーにならず、Nには0が代入される…

Adaにおける正負あり整数

type My_Integer is range -127..128; みたいなやつ。範囲は当然両端を含む。 StandardにはIntegerとPositiveとNaturalが定義されている。実装に丸投げだけど。 type Integer is range implementation-defined; type Natural is new Integer range 0..Intege…

Adaにおける列挙型 enumeration type

type Foo_Bar_Baz is (Foo, Bar, Baz); みたいなやつ。論理型 Boolean もパッケージ Standard で以下のように定義される。 type Boolean is (True, False) ついでに文字 Character(文字列 String ではない)も。 type Character (nul, soh, stx, (略) , '…

Adaにおける離散型

列挙型、正負あり整数型、正負なし整数型をまとめて『離散型』と言う。*1 離散型には以下のような属性がある: S'Pos 型Sの変数Vを表す整数(universal-integer*2)を返す。 S'Val 整数(universal-integer)が示すSにおける値を返す。 *1:多分。別な、もっ…

Adaにおける数

数は共通に属性*1を持つ:(ただしこのリストは一部。c.f. ARM 3.5.) S'First 型のとりうる最初(≒最小)の値。 S'Last 型のとりうる最後(≒最大)の値。 S'Range range S'First..S'Lastと一緒。 S'Min 2つの値のうち、小さい方。 S'Max 大きい方。 S'Succ …

Adaにおける型

一覧。ARM 3.2から適当に改変。日本語も適当。 基本型 elementary 数 scalar 離散型 discrete 列挙型 enumeration (文字、真偽値、…) 正負あり整数 signed integer 正負なし整数 modular integer 実数 real 浮動小数点値 floating point 固定小数点値 fixe…

Adaの解説

Ada

最近Adaの解説を書いている人が多い気がするそうなので、便乗するしかないだろう、と。 三匹目のドジョウってレベルじゃないですが。 2009年は(仕様書の厚さ的に)Ada越えを果たしそうなC++0xもついに出る予定ですし、タイミング的にもバッチリじゃないでし…

1Z

Ada

全く気がついてませんでしたが、AdaICにAda1Zのドラフトが出てますね。 変更点と思しきページの一応Introductionと、重要らしい6.5、7.5は読みましたが270kb全部を読む気はしないなぁ…。 そもそも英語読めないから雰囲気感じるだけだったりしますがw。

九九の続き

漢数字が〇..九だけでもできるようなので書き直し。 with Ada.Wide_Text_Io, Ada.Strings; use Ada.Wide_Text_Io; procedure Kuku is type 漢数字 is (〇, 一, 二, 三, 四, 五, 六, 七, 八, 九); 要素数:constant:=(漢数字'Pos(漢数字'Last)- 漢数字'Pos(漢…

Adaで九九表

どう書く?orgで「漢数字で九九の表」というのを見つけて、 「そう言えばAdaって受け付ける文字コードがUCSって事になってるんだから普通にできるんじゃね?」 と思ったのでやってみました。 折角だから埋め込み文字列排除(つまり「"」出現禁止)の方向で。…

タスクの寿命

ARM 9.3 Task Dependence - Termination of Tasksがよく解らなかった*1からとりあえず試してみたよメモ *1:ということにして読むの放棄した