Hi,
I’m new to ATS as I’ve just started reading it in the past couple of weeks.
Is there a way to define a new static term used for dependent type, say
ullint, by using sortdef?
Thanks,
– Alex
Hi,
I’m new to ATS as I’ve just started reading it in the past couple of weeks.
Is there a way to define a new static term used for dependent type, say
ullint, by using sortdef?
Thanks,
– Alex
I’ve a function that I want to add in dependent type.
fun foo (n: ullint): ullint =
if n mod 3ULL = 1 then foo((n + 2ULL) / 3ULL)
else n + 2ULL
I want to add in dependent type checking for above to say it’s greater than
0. How do I do that?
Thanks,
– AlexOn Tuesday, July 22, 2014 4:04:10 AM UTC-7, gmhwxi wrote:
I don’t quite understand your question.
sortdef is usually used to create an alias for a subset sort. E.g.,
sortdef nat = {a: int | a >= 0}
datasort can be used to declare a new algebraic sort. E.g.,
datasort mynat = mynat_z | mynat_s of mynat
On Tuesday, July 22, 2014 4:47:11 AM UTC-4, Alex Chen wrote:
Hi,
I’m new to ATS as I’ve just started reading it in the past couple of
weeks. Is there a way to define a new static term used for dependent type,
say ullint, by using sortdef?Thanks,
– Alex
I got compilation error about undefined reference to
`atspre_g1uint_add_ullint’, and I saw g1uint_add_ullint is declared
in prelude/SATS/integer.sats and defined in prelude/DATS/integer.dats. If I
tried to do staload of these two files, I got other errors like symbol mod
cannot be resolved due to many matches.
About ATS tutorial, is it possible to also provide it as one long HTML
page? This way it’s easier to search for something.
You are welcome.
As a language, ATS can support OO design pretty well.
If you can outline what your DB storage engine does, then I will be happy
to show you how to do a high-level design in ATS by making use of abstract
types.
ATS advocates a refinement-based style of programming:
http://www.ats-lang.org/EXAMPLE/EFFECTIVATS/mergesort/main.html
The hope here is to identify a process, which, if properly followed, should
naturally lead to the construction of expected programs.On Thursday, July 31, 2014 1:30:52 AM UTC-4, Alex Chen wrote:
I just downloaded your new version ATS2-0.1.1 and compiled the sample code
that you fixed for me, and it works! Thanks for being so actively
responsive for all of us ATS enthusiasts. I’ve yet to learn and grasp ATS
fully, but I’m already excited along each step that I passed.About OO, I’m also looking at C Object System (COS) and Cello (libCello)
to understand how I can use/apply their techniques to ATS later on (if at
all possible).I appreciate all your help so far. One more question, regarding about my
personal project, does it make it sense to use ATS as the primary language
and have C functions calling ATS generated functions? I’m trying to write
some DB storage engine for MySQL, but thought using ATS as a way to learn
new thing and have fun (and struggles) with it.Thanks,
– Alex
Here is a version of foo where the assigned type
indicates that foo always returns a value greater than or equal to 2:
fun
foo
{
n:nat
} (
n: ullint(n)
) : [r:int | r >= 2] ullint(r) = let
val (pfmod | r) = g1uint_mod2 (n, 3ull)
prval (pfmul) = divmod_elim (pfmod)
prval ((void)) = mul_elim (pfmul)
in
//
if
r = 1
then let
val (pfdiv | q) = g1uint_div2 (n + 2ull, 3ull)
prval (pfmul) = divmod_elim (pfdiv)
prval ((void)) = mul_elim (pfmul)
in
foo (q)
end // end of [then]
else n + 2ull
//
end // end of [foo]On Wednesday, July 23, 2014 1:16:34 PM UTC-4, gmhwxi wrote:
What is greater than 0?
The argument of foo or the return value?
On Wednesday, July 23, 2014 1:38:59 AM UTC-4, Alex Chen wrote:
I’ve a function that I want to add in dependent type.
fun foo (n: ullint): ullint =
if n mod 3ULL = 1 then foo((n + 2ULL) / 3ULL)
else n + 2ULLI want to add in dependent type checking for above to say it’s greater
than 0. How do I do that?Thanks,
– AlexOn Tuesday, July 22, 2014 4:04:10 AM UTC-7, gmhwxi wrote:
I don’t quite understand your question.
sortdef is usually used to create an alias for a subset sort. E.g.,
sortdef nat = {a: int | a >= 0}
datasort can be used to declare a new algebraic sort. E.g.,
datasort mynat = mynat_z | mynat_s of mynat
On Tuesday, July 22, 2014 4:47:11 AM UTC-4, Alex Chen wrote:
Hi,
I’m new to ATS as I’ve just started reading it in the past couple of
weeks. Is there a way to define a new static term used for dependent type,
say ullint, by using sortdef?Thanks,
– Alex
Thanks for offering to help! Sure, I’ll be more than glad to have your help
and inputs. However, I’m no where near designing anything yet. I’m still
learning the basics of ATS2.
I’m still getting compilation errors using the code you provided:
[ajchen@titan ats-test]$ patscc foo.dats -o foo
exec(patsopt --output foo_dats.c --dynamic foo.dats)
Hello from ATS2(ATS/Postiats)!
Loading [fixity.ats] starts!
Loading [fixity.ats] finishes!
Loading [basics_pre.sats] starts!
Loading [basics_pre.sats] finishes!
Loading [basics_sta.sats] starts!
Loading [basics_sta.sats] finishes!
Loading [basics_dyn.sats] starts!
Loading [basics_dyn.sats] finishes!
Loading [basics_gen.sats] starts!
Loading [basics_gen.sats] finishes!
The 1st translation (fixity) of [foo.dats] is successfully completed!
/home/ajchen/ats-test/foo.dats: 443(line=31, offs=22) – 458(line=31,
offs=37): error(2):
[/home/hwxi/research/Postiats/git/src/pats_trans2_dynexp.dats]:
d1exp_tr_app_dyn_dqid: the dynamic identifier [divmod_mul_elim] is
unrecognized.
/home/ajchen/ats-test/foo.dats: 565(line=39, offs=22) – 580(line=39,
offs=37): error(2):
[/home/hwxi/research/Postiats/git/src/pats_trans2_dynexp.dats]:
d1exp_tr_app_dyn_dqid: the dynamic identifier [divmod_mul_elim] is
unrecognized.
TRANS2: there are [2] errors in total.
exit(ATS): uncaught exception:
_2home_2hwxi_2research_2Postiats_2git_2src_2pats_error_2esats__FatalErrorException(1025)
exec(patsopt --output foo_dats.c --dynamic foo.dats) = 256
Now if I commented out foo2(), I got these errors:
[ajchen@titan ats-test]$ patscc foo.dats -o foo
exec(patsopt --output foo_dats.c --dynamic foo.dats)
Hello from ATS2(ATS/Postiats)!
Loading [fixity.ats] starts!
Loading [fixity.ats] finishes!
Loading [basics_pre.sats] starts!
Loading [basics_pre.sats] finishes!
Loading [basics_sta.sats] starts!
Loading [basics_sta.sats] finishes!
Loading [basics_dyn.sats] starts!
Loading [basics_dyn.sats] finishes!
Loading [basics_gen.sats] starts!
Loading [basics_gen.sats] finishes!
The 1st translation (fixity) of [foo.dats] is successfully completed!
The 2nd translation (binding) of [foo.dats] is successfully completed!
The 3rd translation (type-checking) of [foo.dats] is successfully completed!
The 4th translation (type/proof-erasing) of [foo.dats] is successfully
completed!
exec(patsopt --output foo_dats.c --dynamic foo.dats) = 0
exec(gcc -std=c99 -D_XOPEN_SOURCE -I${PATSHOME} -I${PATSHOME}/ccomp/runtime
-L${PATSHOME}/ccomp/atslib/lib -L${PATSHOME}/ccomp/atslib/lib64 foo_dats.c
-o foo)
foo_dats.c: In function ‘foo_0’:
foo_dats.c:210:1: warning: implicit declaration of function
‘atspre_g1uint_add_ullint’ [-Wimplicit-function-declaration]
ATSINSmove(tmpret0, atspre_g1uint_add_ullint(ATSPMVcastfn(g1ofg0_uint,
atstkind_t0ype(atstype_ullint), arg0), ATSPMVi0nt(2ULL))) ;
^
foo_dats.c: In function ‘mainats_void_0’:
foo_dats.c:342:1: warning: implicit declaration of function
‘atspre_g1uint_eq_ullint’ [-Wimplicit-function-declaration]
ATSINSmove(tmp10, atspre_g1uint_eq_ullint(tmp11, ATSPMVi0nt(14ull))) ;
^
/tmp/cc15XczT.o: In function foo_0': foo_dats.c:(.text+0x1ed): undefined reference to
atspre_g1uint_add_ullint’
/tmp/cc15XczT.o: In function mainats_void_0': foo_dats.c:(.text+0x258): undefined reference to
atspre_g1uint_eq_ullint’
collect2: error: ld returned 1 exit status
exec(gcc -std=c99 -D_XOPEN_SOURCE -I${PATSHOME} -I${PATSHOME}/ccomp/runtime
-L${PATSHOME}/ccomp/atslib/lib -L${PATSHOME}/ccomp/atslib/lib64 foo_dats.c
-o foo) = 256
My ATS2 is installed at /opt/ats directory, and I’ve
PATSHOME=/opt/ats/lib/ats2-postiats-0.1.1. Weird thing is if I changed
PATSHOME=/opt/ats, patscc gave near 100% CPU and never terminates unless I
control-C/kill it.
I’m running Manjaro distro if that helps.
Thanks,
– Alex
I don’t quite understand your question.
sortdef is usually used to create an alias for a subset sort. E.g.,
sortdef nat = {a: int | a >= 0}
datasort can be used to declare a new algebraic sort. E.g.,
datasort mynat = mynat_z | mynat_s of mynatOn Tuesday, July 22, 2014 4:47:11 AM UTC-4, Alex Chen wrote:
Hi,
I’m new to ATS as I’ve just started reading it in the past couple of
weeks. Is there a way to define a new static term used for dependent type,
say ullint, by using sortdef?Thanks,
– Alex
I tried with latest from GitHub, which is version 0.1.1, but it still
didn’t work. What am I still missing here? Thanks.
/home/ajchen/ats-github/
postiats/prelude/SATS/CODEGEN/Makefile_atxt.dats: 155(line=10, offs=9)
– 182(line=10, offs=36): error(1): the file [libatsdoc/dynloadall.dats] is
not available for dynamic loading
It seems that ATSHOME (not PATSHOME) was not properly set.
Anyhow, I’ll wait for your official release of ATS2-0.1.1 then. When
will it be out?
Some time next week.
Also, how stable is ATS in terms of syntax, semantics, and tool chains if
I want to use it for some bigger project?
The syntax is essentially fixed. I have no plan to make new changes unless
absolutely necessary.
Think of ATS as a way to generate C code of high quality. If you can use C
in your project, then you should be able
to use ATS.
Also, I read that your first version of ATS has OO. Do you plan to add
some basic OO like encapsulation and polymorphism or some kind of multiple
dispatch in future versions of ATS?
No, I have no plan to add OO features into ATS in the future.
To some extent, ATS is kind of like C + a fancy template system. It is
conceivable that someone could
design an extension of ATS and compile it into ATS (sort of like compiling
C++ into C).
some basic OO like encapsulation and polymorphism
A lot of this can already be done in ATS: encapsulation based on abstract
types and polymorphism
based on templates.On Sunday, July 27, 2014 1:03:44 AM UTC-4, Alex Chen wrote:
My previous installation of ATS2 0.1.1 was done by following the
instruction given in the INSTALL file on github ATS2-Postiats. Anyhow, I
just tried out the installation instruction from the above link, and I got
this error. I did install ATS-Anairiats as a prerequisite to bootstrap ATS2.[ajchen@titan postiats]$ make -f codegen/Makefile_atslib
make -C prelude/SATS/CODEGEN -f Makefile.gen
make[1]: Entering directory
‘/home/ajchen/ats-github/postiats/prelude/SATS/CODEGEN’
“/opt/ats1/lib/ats-anairiats-0.2.11”/bin/atscc -o Makefile.exe
Makefile_atxt.dats -latsdoc
/opt/ats1/lib/ats-anairiats-0.2.11/bin/atsopt --output
Makefile_atxt_dats.c --dynamic Makefile_atxt.dats
/home/ajchen/ats-github/postiats/prelude/SATS/CODEGEN/Makefile_atxt.dats:
155(line=10, offs=9) – 182(line=10, offs=36): error(1): the file
[libatsdoc/dynloadall.dats] is not available for dynamic loading
exit(ATS): uncaught exception:
ATS_2d0_2e2_2e11_2src_2ats_error_2esats__FatalErrorException(1027)
Makefile.gen:21: recipe for target ‘Makefile.exe’ failed
make[1]: *** [Makefile.exe] Error 1
make[1]: Leaving directory
‘/home/ajchen/ats-github/postiats/prelude/SATS/CODEGEN’
codegen/Makefile_atslib:23: recipe for target ‘prelude_sats’ failed
make: *** [prelude_sats] Error 2Anyhow, I’ll wait for your official release of ATS2-0.1.1 then. When will
it be out?Also, how stable is ATS in terms of syntax, semantics, and tool chains if
I want to use it for some bigger project? Also, I read that your first
version of ATS has OO. Do you plan to add some basic OO like encapsulation
and polymorphism or some kind of multiple dispatch in future versions of
ATS?Thanks,
– Alex
My previous installation of ATS2 0.1.1 was done by following the
instruction given in the INSTALL file on github ATS2-Postiats. Anyhow, I
just tried out the installation instruction from the above link, and I got
this error. I did install ATS-Anairiats as a prerequisite to bootstrap ATS2.
[ajchen@titan postiats]$ make -f codegen/Makefile_atslib
make -C prelude/SATS/CODEGEN -f Makefile.gen
make[1]: Entering directory
’/home/ajchen/ats-github/postiats/prelude/SATS/CODEGEN’
"/opt/ats1/lib/ats-anairiats-0.2.11"/bin/atscc -o Makefile.exe
Makefile_atxt.dats -latsdoc
/opt/ats1/lib/ats-anairiats-0.2.11/bin/atsopt --output Makefile_atxt_dats.c
–dynamic Makefile_atxt.dats
/home/ajchen/ats-github/postiats/prelude/SATS/CODEGEN/Makefile_atxt.dats:
155(line=10, offs=9) – 182(line=10, offs=36): error(1): the file
[libatsdoc/dynloadall.dats] is not available for dynamic loading
exit(ATS): uncaught exception:
ATS_2d0_2e2_2e11_2src_2ats_error_2esats__FatalErrorException(1027)
Makefile.gen:21: recipe for target ‘Makefile.exe’ failed
make[1]: *** [Makefile.exe] Error 1
make[1]: Leaving directory
’/home/ajchen/ats-github/postiats/prelude/SATS/CODEGEN’
codegen/Makefile_atslib:23: recipe for target ‘prelude_sats’ failed
make: *** [prelude_sats] Error 2
Anyhow, I’ll wait for your official release of ATS2-0.1.1 then. When will
it be out?
Also, how stable is ATS in terms of syntax, semantics, and tool chains if I
want to use it for some bigger project? Also, I read that your first
version of ATS has OO. Do you plan to add some basic OO like encapsulation
and polymorphism or some kind of multiple dispatch in future versions of
ATS?
Thanks,
– Alex
I just downloaded your new version ATS2-0.1.1 and compiled the sample code
that you fixed for me, and it works! Thanks for being so actively
responsive for all of us ATS enthusiasts. I’ve yet to learn and grasp ATS
fully, but I’m already excited along each step that I passed.
About OO, I’m also looking at C Object System (COS) and Cello (libCello) to
understand how I can use/apply their techniques to ATS later on (if at all
possible).
I appreciate all your help so far. One more question, regarding about my
personal project, does it make it sense to use ATS as the primary language
and have C functions calling ATS generated functions? I’m trying to write
some DB storage engine for MySQL, but thought using ATS as a way to learn
new thing and have fun (and struggles) with it.
Thanks,
– Alex
Here is the code that works for me:
https://github.com/githwxi/ATS-Postiats/blob/master/doc/EXAMPLE/ATS-QA-LIST/qa-list-303.datsOn Friday, July 25, 2014 2:06:52 AM UTC-4, Alex Chen wrote:
I tried with latest from GitHub, which is version 0.1.1, but it still
didn’t work. What am I still missing here? Thanks.
Here is a much simpler version:
fun foo
(
n: ullint
) : [r:int | r >= 2] ullint(r) =
(
if n mod 3ULL = 1
then foo((n + 2ULL) / 3ULL)
else let
val n = g1ofg0 (n) in n + 2ULL
end // end of [else]
)
g1ofg0 is essentially an identity function; it is called to turn
a value of the type ullint into one of the type ullint(r) for some
natural number r.On Wednesday, July 23, 2014 1:21:39 PM UTC-4, gmhwxi wrote:
Here is a version of foo where the assigned type
indicates that foo always returns a value greater than or equal to 2:fun
foo
{
n:nat
} (
n: ullint(n)
) : [r:int | r >= 2] ullint(r) = let
val (pfmod | r) = g1uint_mod2 (n, 3ull)
prval (pfmul) = divmod_elim (pfmod)
prval ((void)) = mul_elim (pfmul)
in
//
if
r = 1
then let
val (pfdiv | q) = g1uint_div2 (n + 2ull, 3ull)
prval (pfmul) = divmod_elim (pfdiv)
prval ((void)) = mul_elim (pfmul)
in
foo (q)
end // end of [then]
else n + 2ull
//
end // end of [foo]On Wednesday, July 23, 2014 1:16:34 PM UTC-4, gmhwxi wrote:
What is greater than 0?
The argument of foo or the return value?
On Wednesday, July 23, 2014 1:38:59 AM UTC-4, Alex Chen wrote:
I’ve a function that I want to add in dependent type.
fun foo (n: ullint): ullint =
if n mod 3ULL = 1 then foo((n + 2ULL) / 3ULL)
else n + 2ULLI want to add in dependent type checking for above to say it’s greater
than 0. How do I do that?Thanks,
– AlexOn Tuesday, July 22, 2014 4:04:10 AM UTC-7, gmhwxi wrote:
I don’t quite understand your question.
sortdef is usually used to create an alias for a subset sort. E.g.,
sortdef nat = {a: int | a >= 0}
datasort can be used to declare a new algebraic sort. E.g.,
datasort mynat = mynat_z | mynat_s of mynat
On Tuesday, July 22, 2014 4:47:11 AM UTC-4, Alex Chen wrote:
Hi,
I’m new to ATS as I’ve just started reading it in the past couple of
weeks. Is there a way to define a new static term used for dependent type,
say ullint, by using sortdef?Thanks,
– Alex
Unfortunately, atspre_g1uint_add_ullint is not available in ATS2-0.1.0.
If you use the GitHub version of ATS2, then you will have no problem
compiling the code.
As for ATS tutorial, its source is in DocBook format. I don’t know how to
use it to generate a single-page HTML file :(On Thursday, July 24, 2014 2:10:11 AM UTC-4, Alex Chen wrote:
I got compilation error about undefined reference to
`atspre_g1uint_add_ullint’, and I saw g1uint_add_ullint is declared
in prelude/SATS/integer.sats and defined in prelude/DATS/integer.dats. If I
tried to do staload of these two files, I got other errors like symbol mod
cannot be resolved due to many matches.About ATS tutorial, is it possible to also provide it as one long HTML
page? This way it’s easier to search for something.
What is greater than 0?
The argument of foo or the return value?On Wednesday, July 23, 2014 1:38:59 AM UTC-4, Alex Chen wrote:
I’ve a function that I want to add in dependent type.
fun foo (n: ullint): ullint =
if n mod 3ULL = 1 then foo((n + 2ULL) / 3ULL)
else n + 2ULLI want to add in dependent type checking for above to say it’s greater
than 0. How do I do that?Thanks,
– AlexOn Tuesday, July 22, 2014 4:04:10 AM UTC-7, gmhwxi wrote:
I don’t quite understand your question.
sortdef is usually used to create an alias for a subset sort. E.g.,
sortdef nat = {a: int | a >= 0}
datasort can be used to declare a new algebraic sort. E.g.,
datasort mynat = mynat_z | mynat_s of mynat
On Tuesday, July 22, 2014 4:47:11 AM UTC-4, Alex Chen wrote:
Hi,
I’m new to ATS as I’ve just started reading it in the past couple of
weeks. Is there a way to define a new static term used for dependent type,
say ullint, by using sortdef?Thanks,
– Alex
It seems that the GitHub version of ATS2 was not properly installed.
Did you follow the instructions here:
http://sourceforge.net/p/ats2-lang/wiki/Building%20and%20installing/
If you just want to test the code, you can change ullint to ulint for the
moment.
I will release ATS2-0.1.1 soon.On Saturday, July 26, 2014 2:09:15 AM UTC-4, Alex Chen wrote:
I’m still getting compilation errors using the code you provided:
[ajchen@titan ats-test]$ patscc foo.dats -o foo
exec(patsopt --output foo_dats.c --dynamic foo.dats)
Hello from ATS2(ATS/Postiats)!
Loading [fixity.ats] starts!
Loading [fixity.ats] finishes!
Loading [basics_pre.sats] starts!
Loading [basics_pre.sats] finishes!
Loading [basics_sta.sats] starts!
Loading [basics_sta.sats] finishes!
Loading [basics_dyn.sats] starts!
Loading [basics_dyn.sats] finishes!
Loading [basics_gen.sats] starts!
Loading [basics_gen.sats] finishes!
The 1st translation (fixity) of [foo.dats] is successfully completed!
/home/ajchen/ats-test/foo.dats: 443(line=31, offs=22) – 458(line=31,
offs=37): error(2):
[/home/hwxi/research/Postiats/git/src/pats_trans2_dynexp.dats]:
d1exp_tr_app_dyn_dqid: the dynamic identifier [divmod_mul_elim] is
unrecognized.
/home/ajchen/ats-test/foo.dats: 565(line=39, offs=22) – 580(line=39,
offs=37): error(2):
[/home/hwxi/research/Postiats/git/src/pats_trans2_dynexp.dats]:
d1exp_tr_app_dyn_dqid: the dynamic identifier [divmod_mul_elim] is
unrecognized.
TRANS2: there are [2] errors in total.
exit(ATS): uncaught exception:
_2home_2hwxi_2research_2Postiats_2git_2src_2pats_error_2esats__FatalErrorException(1025)
exec(patsopt --output foo_dats.c --dynamic foo.dats) = 256Now if I commented out foo2(), I got these errors:
[ajchen@titan ats-test]$ patscc foo.dats -o foo
exec(patsopt --output foo_dats.c --dynamic foo.dats)
Hello from ATS2(ATS/Postiats)!
Loading [fixity.ats] starts!
Loading [fixity.ats] finishes!
Loading [basics_pre.sats] starts!
Loading [basics_pre.sats] finishes!
Loading [basics_sta.sats] starts!
Loading [basics_sta.sats] finishes!
Loading [basics_dyn.sats] starts!
Loading [basics_dyn.sats] finishes!
Loading [basics_gen.sats] starts!
Loading [basics_gen.sats] finishes!
The 1st translation (fixity) of [foo.dats] is successfully completed!
The 2nd translation (binding) of [foo.dats] is successfully completed!
The 3rd translation (type-checking) of [foo.dats] is successfully
completed!
The 4th translation (type/proof-erasing) of [foo.dats] is successfully
completed!
exec(patsopt --output foo_dats.c --dynamic foo.dats) = 0
exec(gcc -std=c99 -D_XOPEN_SOURCE -I${PATSHOME}
-I${PATSHOME}/ccomp/runtime -L${PATSHOME}/ccomp/atslib/lib
-L${PATSHOME}/ccomp/atslib/lib64 foo_dats.c -o foo)
foo_dats.c: In function ‘foo_0’:
foo_dats.c:210:1: warning: implicit declaration of function
‘atspre_g1uint_add_ullint’ [-Wimplicit-function-declaration]
ATSINSmove(tmpret0, atspre_g1uint_add_ullint(ATSPMVcastfn(g1ofg0_uint,
atstkind_t0ype(atstype_ullint), arg0), ATSPMVi0nt(2ULL))) ;
^
foo_dats.c: In function ‘mainats_void_0’:
foo_dats.c:342:1: warning: implicit declaration of function
‘atspre_g1uint_eq_ullint’ [-Wimplicit-function-declaration]
ATSINSmove(tmp10, atspre_g1uint_eq_ullint(tmp11, ATSPMVi0nt(14ull))) ;
^
/tmp/cc15XczT.o: In functionfoo_0': foo_dats.c:(.text+0x1ed): undefined reference to
atspre_g1uint_add_ullint’
/tmp/cc15XczT.o: In functionmainats_void_0': foo_dats.c:(.text+0x258): undefined reference to
atspre_g1uint_eq_ullint’
collect2: error: ld returned 1 exit status
exec(gcc -std=c99 -D_XOPEN_SOURCE -I${PATSHOME}
-I${PATSHOME}/ccomp/runtime -L${PATSHOME}/ccomp/atslib/lib
-L${PATSHOME}/ccomp/atslib/lib64 foo_dats.c -o foo) = 256My ATS2 is installed at /opt/ats directory, and I’ve
PATSHOME=/opt/ats/lib/ats2-postiats-0.1.1. Weird thing is if I changed
PATSHOME=/opt/ats, patscc gave near 100% CPU and never terminates unless I
control-C/kill it.I’m running Manjaro distro if that helps.
Thanks,
– Alex