so, the reverse is apllied to make sure the result is what user expected? 
does it can be removed from function like quick sort, which seems like will 
not effect the result 

在2025年6月4日星期三 UTC+8 07:43:08<gmhwxi> 写道:

>
> Stable sorting means the ordering of equals should not be changed after 
> sorting is done.
> For instance, if we sort the following list according to parity (0 < 1):
>
> [3,2,5,4,1,6]
>
> we should get: [2,4,6,3,5,1]
>
> In the mergesort implementation you referred to, list_reverse needs to be 
> called to ensure sorting
> done is actually stable sorting. Without list_reverse, the ordering among 
> some equals is reversed.
>
> On Tuesday, June 3, 2025 at 7:31:48 PM UTC-4 jin wrote:
>
>> thanks a lot, in my understand, the function under a function can use its 
>> father's type and without convert to templates, and can you explain more 
>> about why there is a make sort stable commet at the second picture which is 
>> the code in the book i download from ats lang web
>>
>> 在2025年6月4日星期三 UTC+8 06:53:07<gmhwxi> 写道:
>>
>>> For instance, I see the following kind of recursive templates very often:
>>>
>>> fun{a:t@ype}
>>> list0_length(xs: list0(a)): int =
>>> case+ xs of
>>> | list0_nil() => 0
>>> | list0_cons(x1, xs) => 1 + list0_length<a>(xs)
>>>
>>> This kind of code may be working, but should be avoided. Instead,
>>> one can replace it with the following code:
>>>
>>> fun{a:t@ype}
>>> list0_length(xs: list0(a)): int =
>>> length(xs) where
>>> {
>>> fun length(xs: list0(a)): int =
>>> case+ xs of
>>> | list0_nil() => 0
>>> | list0_cons(_, xs) => 1 + length(xs)
>>> }
>>>
>>> BTW, recursive templates, by default, are not supported in ATS3.
>>>
>>> On Tuesday, June 3, 2025 at 6:45:35 PM UTC-4 gmhwxi wrote:
>>>
>>>>
>>>> I see that you wrote some ATS2 code.
>>>>
>>>> Unfortunately, there is not much written documentation on ATS2 (or ATS 
>>>> in general).
>>>> It is often difficult for one to immediately figure out how various 
>>>> features in ATS2 should
>>>> be used.
>>>>
>>>> In your code, you have some recursive templates (e.g., your template 
>>>> list0RevHelper is
>>>> recursive).
>>>>
>>>> In general, templates should *not* be recursive. In this case, 
>>>> list0RevHelper does not need
>>>> to be a template in the first place. Just turn it into an ordinary 
>>>> (recursive) function. Then I believe
>>>> your problem will go away.
>>>>
>>>> --Hongwei
>>>>
>>>>
>>>>
>>>> On Monday, June 2, 2025 at 8:23:32 PM UTC-4 jin wrote:
>>>>
>>>>> when i t[image: 2025-06-03 07.57.11.png]ry to use list0_rev 
>>>>> (list0_tail (listo_rev lista)) as initlist function, there notice segment 
>>>>> default at runtime, so i change function to the picture below, error 
>>>>> disappear, i want to know what cause the error, is there any relation 
>>>>> between the error and the "make stable" of the second picture, which 
>>>>> seems 
>>>>> like not nessesary, that's really confuse[image: 2025-06-03 
>>>>> 07.57.11.png]
>>>>> [image: 2025-06-03 08.02.32.png][image: 2025-06-03 07.57.11.png]
>>>>
>>>>

-- 
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 visit 
https://groups.google.com/d/msgid/ats-lang-users/1de3e545-af9b-4bcd-b636-1c29823a0447n%40googlegroups.com.

Reply via email to