I'm trying to understand how templates work and can't get this example to compile:
#include "share/HATS/temptory_staload_bucs320.hats" extern fun toString(s:string):void extern fun {} with$print(s: !string):void fun toString(s: !string):void = let val () = with$print(s) in end implement main0(argc,argv) = let val s = "hello world" val () = toString(s) where { impltmp with$print<>(s) = println! s } in end I get the following compilation errors: In file included from template_dats.c:15: template_dats.c: In function ‘toString_0’: template_dats.c:215:26: error: ‘PMVtmpltcstmat’ undeclared (first use in this function) ATSINSmove_void(tmpret0, PMVtmpltcstmat[0](with$print<>)(ATSPMVrefarg0(arg0 ))) ; ^~~~~~~~~~~~~~ /home/deech/ATS/ComposeTalk2019/ATS/ATS-Temptory/ccomp/runtime/ temptory_instrset.h:286:39: note: in definition of macro ‘ATSINSmove_void’ #define ATSINSmove_void(tmp, command) command ^~~~~~~ template_dats.c:215:26: note: each undeclared identifier is reported only once for each function it appears in ATSINSmove_void(tmpret0, PMVtmpltcstmat[0](with$print<>)(ATSPMVrefarg0(arg0 ))) ; ^~~~~~~~~~~~~~ /home/deech/ATS/ComposeTalk2019/ATS/ATS-Temptory/ccomp/runtime/ temptory_instrset.h:286:39: note: in definition of macro ‘ATSINSmove_void’ #define ATSINSmove_void(tmp, command) command ^~~~~~~ template_dats.c:215:44: error: ‘with$print’ undeclared (first use in this function); did you mean ‘isprint’? ATSINSmove_void(tmpret0, PMVtmpltcstmat[0](with$print<>)(ATSPMVrefarg0(arg0 ))) ; ^~~~~~~~~~ /home/deech/ATS/ComposeTalk2019/ATS/ATS-Temptory/ccomp/runtime/ temptory_instrset.h:286:39: note: in definition of macro ‘ATSINSmove_void’ #define ATSINSmove_void(tmp, command) command ^~~~~~~ template_dats.c:215:55: error: expected expression before ‘>’ token ATSINSmove_void(tmpret0, PMVtmpltcstmat[0](with$print<>)(ATSPMVrefarg0(arg0 ))) ; ^ /home/deech/ATS/ComposeTalk2019/ATS/ATS-Temptory/ccomp/runtime/ temptory_instrset.h:286:39: note: in definition of macro ‘ATSINSmove_void’ #define ATSINSmove_void(tmp, command) command -- You received this message because you are subscribed to the Google Groups "ats-lang-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to ats-lang-users+unsubscr...@googlegroups.com. To post to this group, send email to ats-lang-users@googlegroups.com. Visit this group at https://groups.google.com/group/ats-lang-users. To view this discussion on the web visit https://groups.google.com/d/msgid/ats-lang-users/658dd027-21a9-4f1b-a8eb-608c5a54b77f%40googlegroups.com.