list_map(zs, f1) should be list_map<(a,b)>(zs, f1) Sorry, automatic template parameter inference may be off, sometimes.
On Sat, Jul 13, 2024 at 11:11 AM Saravanan Thivakaram Prakash < [email protected]> wrote: > Hi, > > I am from an embedded software, C/Python background. I am currently > reading Introduction to Programming in ATS and working out the examples > therein. > > I noticed that when I make some changes to CHAP_DEPDTREF/listfuns.dats, > the built binary segfaults. I though of posting it here. > > Below are the changes I made: > > > --- a/doc/BOOK/INT2PROGINATS/CODE/CHAP_DEPDTREF/listfuns.dats > +++ b/doc/BOOK/INT2PROGINATS/CODE/CHAP_DEPDTREF/listfuns.dats > @@ -105,27 +105,29 @@ a,b:t@ype > > fun{ > a, > b:t@ype} > {c:t@ype > } list_zipwith > {n:nat} .<n>. > ( > xs: list (a, n) > , ys: list (b, n) > , f: (a, b) -<cloref1> c > -) : list (c, n) = case+ (xs, ys) of > - | (list_cons (x, xs), > - list_cons (y, ys)) => > - list_cons{c}(f (x, y), list_zipwith<a,b><c> (xs, ys, f)) > - | (list_nil (), list_nil ()) => list_nil () > +) : list (c, n) = let > + val zs = list_zip(xs, ys) > + val f1 = lam(xy:(a,b)) =<cloref1> f(xy.0, xy.1) > +in > + list_map(zs, f1) > +end > + > // end of [list_zipwith] > > (* ****** ****** *) > // > typedef T = int > typedef T2 = (T, T) > // > (* ****** ****** *) > > implement > main0 () = > > Below is a full listing of a minimal program that is reproducing the > crash. I am on Ubuntu 22.04, and am using ATS from the ubuntu package > ats2-lang. > > $ cat listfuns.dats > #include > "prelude/DATS/integer.dats" > > fun{ > a:t@ype} > {b:t@ype > } list_map {n:nat} .<n>. ( > xs: list (a, n), f: a -<cloref1> b > ) : list (b, n) = case+ xs of > | list_cons (x, xs) => list_cons{b}(f x, list_map (xs, f)) > | list_nil () => list_nil () > > > fun{ > a,b:t@ype > } list_zip {n:nat} .<n>. > ( > xs: list (a, n), ys: list (b, n) > ) : list ((a, b), n) = > ( > case+ (xs, ys) of > | (list_cons (x, xs), > list_cons (y, ys)) => > list_cons{(a, b)}((x, y), list_zip<a,b> (xs, ys)) > | (list_nil (), list_nil ()) => list_nil () > ) > > > fun{ > a, > b:t@ype} > {c:t@ype > } list_zipwith > {n:nat} .<n>. > ( > xs: list (a, n) > , ys: list (b, n) > , f: (a, b) -<cloref1> c > ) : list (c, n) = let > val zs = list_zip(xs, ys) > val f1 = lam(xy:(a,b)) =<cloref1> f(xy.0, xy.1) > in > list_map(zs, f1) > end > > implement > main0 () = > { > > val xs1 = list_cons(0, list_nil()) > val xs2 = list_cons(1, list_nil()) > > val zs = list_zipwith<int,int><int> (xs1, xs2, lam (x1, x2) => x1 + x2) > > } > > $ PATSHOME=/usr/lib/ats2-postiats-0.4.2 make listfuns > /usr/lib/ats2-postiats-0.4.2/bin/patsopt -o listfuns_dats.c --dynamic > listfuns.dats || echo listfuns_dats.c ": ERROR!!!" > \ > gcc -std=c99 -D_GNU_SOURCE -DATS_MEMALLOC_LIBC > -I/usr/lib/ats2-postiats-0.4.2 -I/usr/lib/ats2-postiats-0.4.2/ccomp/runtime > -O2 -o listfuns listfuns_dats.c || echo listfuns ": ERROR!!!" > $ ./listfuns > Segmentation fault > $ lsb_release -a > No LSB modules are available. > Distributor ID: Ubuntu > Description: Ubuntu 24.04 LTS > Release: 24.04 > Codename: noble > $ which patsopt > /usr/bin/patsopt > $ patsopt --version > ATS/Postiats version 0.4.2 with Copyright (c) 2011-2020 Hongwei Xi > $ dpkg -l ats2-lang > Desired=Unknown/Install/Remove/Purge/Hold > | > Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend > |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) > ||/ Name Version Architecture Description > > +++-==============-================-============-=========================================== > ii ats2-lang 0.4.2-1.1ubuntu1 amd64 ATS version 2 programming > language compiler > $ > $ > > Let me know if you need any other information. > > Thanks and regards, > Saravanan. > > > -- > 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 [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/ats-lang-users/f5b17940-61e0-4daf-9a28-8c59d94be172n%40googlegroups.com > <https://groups.google.com/d/msgid/ats-lang-users/f5b17940-61e0-4daf-9a28-8c59d94be172n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ats-lang-users/CAOj48bDKWCXAniGQ_z-gAVcdLrtKmWnRipnQ441o2LH%2Bg%2Bj94w%40mail.gmail.com.
