HCl version 1.6 の機能的な制約について


不完全関数

HCl は最終的にはCLのスーパーセットになる予定です。しかし現在のところ、 時間的な制約とマンパワーの限界から一部の関数が不完全です。
make-array,adjust-array
element-typeとして意味があるのはstring-char,(integer 0 255),bit,tであり、 それ以外のタイプは全てtにまとめられます。また、arrayのrankは6まで に制限されます。
open
openは:direction引数として:ioをサポートしていません。
エラー処理に関して
CLではimportなどの関数でcorrectable errorを出すように定められて いますがHCl ではほとんどの場合、fatal errorで処理しています。

不完全な関数のユーザーインプリメントについて

現在、formatの一部が不完全ですが、これらを ユーザーレベルで再定義するために必要な内部情報、関数は既に組み込まれ ています。formatは全体がHCl 自身で書かれていて、fmtlib1-6.lspがソース であり、これを見ると新しいフォーマットの定義のしかたがわかります。

オブジェクトの制限

HCl はCLの全データタイプをサポートします。しかし、一部のオブジェクトは 多少制限されたものとなっています。
integer
fixnumは24bit表現です。
float
実際にインプリメントされている型は64bitIEEE形式(double)であり、 short,single,longは全てこの型にまとめられています(*)
character
string-charは8bitASCIIとする。attributeteビットは持たないこと とします(*)
simple-array
simple-arrayとして意味があるのは です。これらは固有の内部表現を持ち、効率的なアクセスが可能です。
pathname
pathnameを取り扱う関数において実際に意味のあるのは directory,name,typeの3スロットであり、他(host,device,version)は 仮にセットしてもファイルアクセス時には無視されます。

(*) CLtL では一つ以上のfloatの型が実装されていれば良いとされています
(*) CLtLではcharacterのattribute,controlは持たなくとも良いとされています

参考文献

  1. Guy L. Steele Jr.
    Common Lisp the Language
    Digital Press, 1984
  2. 山本他
    HCLの開発と視角的動作モニタ方式の提案
    情報処理学会記号処理研究会資料 88-SYM-48, 1988
  3. 山本他
    HCL上のPortable Common Loopsのインプリメントと高速化技法
    電子情報通信学会計算機アーキテクチャ研究会報告 77-8, 1989
  4. 山本他
    小型Common Lisp処理系のための記憶領域管理法とその実現
    情報処理学会論文誌,Vol.31,No.7,1990
  5. 山本他
    パーソナル数式処理--Lisp68Kの開発とREDUCEの移植
    bit,共立出版, 1985年3月
  6. 山本他
    項書換え系を用いたCommon Lispコードの最適化
    平成元年度電気関係学会北海道支部連合大会
  7. 山本他
    MC88100版HCl の開発と評価
    平成2年度電気関係学会北海道支部連合大会

もくじ