funset_avltree
ライブラリを使用しようとしていますが、コンパイラが無効なCコードを生成しています。私はATS/Postiatsバージョン0.2.10を使用しています。funset_avltreeライブラリの使用方法は?
私のコードは非常に簡単です:
(* ast.sats *)
staload "libats/SATS/funset_avltree.sats"
datatype ast =
| ast_var of string
fun free_vars (ast : ast) :<> set string
(* ast.dats *)
#include "share/atspre_staload.hats"
staload "./ast.sats"
staload "libats/SATS/funset_avltree.sats"
dynload "libats/DATS/funset_avltree.dats"
implement free_vars (ast : ast) : set string =
case+ ast of
| ast_var name => funset_sing name
コンパイラの出力は、しかし、かなり混乱して:
ast_dats.c:359:51: warning: implicit declaration of function 'S2EVar' is invalid in C99 [-Wimplicit-function-declaration] ATSINSmove(tmpret0, PMVtmpltcstmat[0](funset_sing<S2EVar(4713)>)(tmp1)) ; ^ ast_dats.c:359:39: error: use of undeclared identifier 'funset_sing' ATSINSmove(tmpret0, PMVtmpltcstmat[0](funset_sing<S2EVar(4713)>)(tmp1)) ; ^ ast_dats.c:359:64: error: expected expression ATSINSmove(tmpret0, PMVtmpltcstmat[0](funset_sing<S2EVar(4713)>)(tmp1)) ; ^
私はfunset
とfunset_listord
と同様のエラーを取得します。私は何か些細なことを見逃しているに違いない。コンパイラに何かを含めるかフラグを渡す必要がありますか?
こんにちは、ありがとうございます。テンプレート定義でdatファイルをstaloadする必要があるかどうかはわかりませんでした。私はこれを「ATSのプログラミング入門」で見つけることができませんでした。 – rightfold
ようこそ。テンプレートシステムはかなり新しいです。私は著者がまだ関連章を終えていると思う。 –
@rightfold、あなたのサイトにアクセスしました。 ATSに関するドキュメントを保管するのは本当にいいことです。 http://discourse.ats-lang.org/c/documentationは公式なものであり、ますますユーザーが投稿した文書を含める予定です。あなたの貢献は大歓迎です。ありがとう。 –