Ah! OK. With that change segfault disappears. Thanks.Thanks.
On Saturday 13 July 2024 at 09:26:38 UTC-6 [email protected] wrote: > 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/5b013e95-f132-4221-8a72-1b5189f99fb7n%40googlegroups.com.
