Я пытаюсь использовать библиотеку 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
. Я должен упустить что-то тривиальное. Должен ли я включать что-то или передавать некоторый флаг компилятору?
Привет, спасибо. Я не знал, что вам нужно ставить файлы dats с определениями шаблонов. Я не мог найти это в книге «Введение в программирование в ОВД». – rightfold
Добро пожаловать. Система шаблонов довольно новая. Я думаю, что автор все еще заканчивает соответствующие главы. –
@ rightfold, я посетил ваш сайт. Очень приятно, что вы храните документацию об ATS. Я просто хочу обратить ваше внимание на то, что http://discourse.ats-lang.org/c/documentation является официальным, и в него планируется включить все больше и больше пользовательских документов. И ваш вклад очень приветствуется. Благодарю. –