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.

Reply via email to