wait for
プログラミング言語、特に手続き型言語の最大のメリットは、ステートを位置で表現できることだと思いました。gotoによるステートマシン実装は捨てたもんじゃないと思う。
それはともかく、VHDLでは10μs待ちたいときはwait for 10 us;などと書けます。例によってシミュレーション用の構文で論理合成できませんけれど。
ここでusは別に組み込みの構文ではありません。単位付きの型です。
type time is range (値域は実装依存でinteger'rangeあたり) units fs; ps = 1000 fs; ns = 1000 ps; us = 1000 ns; ms = 1000 us; sec = 1000 ms; min = 60 sec; hr = 60 min; end units;
リッチだなあ。
このサブタイプとしてsubtype seconds is time range (適当な値域) delta 1 sec;とか書いたら最小単位が1 secの型とか作りたいなあ。できませんが。unit day = 24 hr;などと書いて後から単位追加したいなあ。できませんが。type speed is (中略) by length / time;なんて書いて次元でコンパイルエラー出させたいなあ。できませんが。
や、実際問題、このtime型を元に1sec単位のサブタイプsecondsが宣言できて、naturalがintegerより1ビット占有ビット数が少ない型であるように、1sec以下の情報を記憶しない分seconds型のサイズが小さくなってくれるのであれば時間にしろ距離にしろ最小単位を小さくすることによる無駄を気にしないでよくなることに……もしかそれ単に固定小数点型?あーでもAdaの固定小数点型もdigitsは狭められるけどdeltaは変えられないですからねー。
とりとめなくてすみません。