ATS2 の box と HEAD のビルド
先日、ATS入門読んでたら多相関数の節で box
を含んだコードがコンパイルできなくて困ってたら、翻訳者の方に教えて貰えました。
@ShigekiKarita box()は7/21ごろに追加された新しい関数でゲソ。そのためリリース版0.2.1ではコンパイルできないでゲソ...次のリリースを待つか、githubにある開発版の #ATS2 を使ってほしいでゲソ / https://t.co/6imSJkglXX
— Japan ATS User Group (@jats_ug) August 25, 2015
ただ、 ATS2 の HEAD をビルドするとき ATS1 が必要 (ATS1でATS2は実装されている) なのが厄介だったので、そのインストール方法をメモ。なお、詳細は ATS/INSTALL
を読むと良い、ちなみに bootstrap の方はリンク切れてた。
- SourceForge からソースを DL
- 注意 DLしたファイルを解凍するとき、
ATS
というディレクトリ名にすること ./configure && make all
- 以下の環境変数を設定
export ATSHOME={置き場所}/ATS
export ATSHOMERELOC=ATS-x.x.x # DLした .tar の ver
追記
多相関数とテンプレートの混在についてもご教授頂きました。ありがたい。
@ShigekiKarita 完全にコードベースで互換性は残念ながらないようでゲソ。例えばエントリポイントの関数名がmainからmain0になったりしているでゲソ。それ以外にも細かい仕様の差異があるはずで、例えばテンプレートはATS1ではサポートされていなかったようでゲソ。
— Japan ATS User Group (@jats_ug) August 25, 2015
@ShigekiKarita テンプレートは使うまで実体化されないので、テンプレート内から呼出しているテンプレートを差替え可能でゲソ。しかもテンプレートはクロージャのような環境を持たないので、高速かつC言語フレンドリじゃなイカ / https://t.co/WEvEH5tpro
— Japan ATS User Group (@jats_ug) August 25, 2015
ほぼ C++ や D のテンプレートと同じ目的で存在してるっぽいです。しばらくは言語機能を把握することにかかると思いますが、後で contrib 等の利用例が気になるので読んでみたい。