acl4の開発ログ #04
2026.01.25(日) #0
- [Q]ライブラリを作っていくのはまあいいとして、このライブラリを使って何を作るの?何も作らないんだったら、ライブラリなんか作っても意味ないよね!
- [A]全くそのとおりです。多分何らかの言語を作ります。
2026.01.28(水) #0
- a4_0003とa4_0004を書きました。VecChrはできたので、次は何にしようかな。足場は固まったので、いよいよ言語っぽいものを作るための関数群をそろえようかなー。
2026.01.28(水) #1
- サイズ管理をしなくていいスタックが作れそうだと思ったので実験してみます。
class_(Elm) { int i; char *s; };
VecChr stk[1]; VecChr_ini(stk); Elm *sp;
// push
VecChr_resizeDiff(stk, + sizeof (Elm)); sp = (Elm *) &stk->p[stk->n - sizeof (Elm)];
sp->i = 123; sp->s = "hello";
printf("stack-top = [%d, %s]\n", sp->i, sp->s);
// pop
VecChr_resizeDiff(stk, - sizeof (Elm)); sp = (Elm *) &stk->p[stk->n - sizeof (Elm)];
- これって、以下のような関数があればもっと短くかけるのかな?
void *VecChr_stkPush(VecChr *w, intptr_t sz) { VecChr_resizeDiff(w, + sz); return w->p + w->n - sz; }
void *VecChr_stkPull(VecChr *w, intptr_t sz) { VecChr_resizeDiff(w, - sz); return w->p + w->n - sz; }
sp = VecChr_stkPush(stk, sizeof (Elm)); sp->i = 123; sp->s = "hello";
sp = VecChr_stkPull(stk, sizeof (Elm));
2026.01.29(木) #0
- C++のSTLでは双方向リストはlistっていう名前なのかー。じゃあそれに似せた名前にしたほうがいいかもしれないなあ。
- STLのset相当のものも必要なので、それも作らないといけない。
2026.01.29(木) #1
- 一般的な語感では、データを追加するときは insert。消すときはdelete。・・・なのかな?
- STLではpush_backとかpush_frontで、データの追加を意味する場合が多い。もちろんinsertもある。
- STLでは消すときはeraseがよくつかわれる。
- うーん、だんだんSTLの命名規則が気に入らなくなってきたよ・・・。
- あれ?データを追加するのって、insertよりもaddかも?・・・まあでもaddだと加算みたいだから、避けられるのかな。
- ああでも、C#のsetみたいに、add-removeで追加と削除を表す場合もあるのかー。
- Javaもadd-removeモデルだなあ。
2026.01.29(木) #2
- よしきめた。acl4ではこうしよう。
- データの追加と削除はadd/rmvで統一する。
- 先頭と末尾は、Hd/Tlで統一する。
- 私は双方向リンクなどでつながった構造の先頭をheadだと思うし、末尾をtailだと思うのです。front/backではなく。
- 私は蛇みたいなものを想像するわけですが、蛇のfront/backって「ん?」と思うのです。head/tailならイメージ通りです。
2026.01.29(木) #3
- 私は変数名や関数名を決められなくて、最悪の場合何日も悩むタイプ。
- それで反省して悩むをやめたら作るのは速くなったけど、今度はわかりにくいと言われるようになりました。
- なかなかうまくいかないものです。