junky)この広告は、90日以上更新していないブログに表示しています。2014-11-01LispとQueueQueue構造EventStreamを作るにあたってキュー構造は使うので、SchemeのListでQueueを作ってみます。Consセルの構造では先頭への要素の追加削除は楽なので、スタック構造はすぐに考え付きます。proper-listに対して操作すると効率が悪いのですが、リストの末尾を記録することで効率化できます。Queueをproper-listの先頭セルと末尾セルのpairであると定義します。例外的に、NILのpairを空のキューと定義します。obj)))))キューに対する参照はcar,cdrの組み合わせでできます。cadr)キューへのpushは末尾セルに対して新しいリストを連結させることで実現します。あわせてキューが記録しているリストの末尾セルも更新します。q))キューのpopは先頭セルを一つ取り除くことで実現します。例外的に要素一つのキューの場合、リスト末尾への参照も取り除く必要があります。Queue構造がサポートされているので、そちらを利用することをお勧めします。処理系がサポートしているものを利用することがベターです。世の中の様々なデータ構造をConsセルのみで実現しようとすることは、Cons脳の体操になるので、Lisp勘が衰えた時に再びやってみようかと思います。レジスタ計算機を実装するときはVector構造が欲しくなりますね。山が土地の局所最適解だ...2014-01-02型付ポインタ2014年、明けましておめでとうございます。多値を言語的にサポートするのかという話。»プロフィールid:bis83gb主にプログラミングについての日記です。最新記事move-toSW中のあれこれfluxusに触れてみました小さな非安全JSON生成器pandoricマクロ月別アーカイブはてなブログをはじめよう!bis83gbさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。