I myself usually just do:

val zero = $UN.cast{size_t}(0)

It may look a bit uglier but it is really just the same thing.


On Sat, Aug 4, 2018 at 6:20 PM, Bruno Zimmermann <brunoc...@gmail.com>
wrote:

> Thank you very much. Now it works!
>
> I did not knew how to search for this function.
>
> Em sábado, 4 de agosto de 2018 19:18:40 UTC-3, gmhwxi escreveu:
>>
>> Please use:
>>
>> val zero = i2sz(0)
>>
>> On Sat, Aug 4, 2018 at 6:03 PM, Bruno Zimmermann <brun...@gmail.com>
>> wrote:
>>
>>> Suppose these files:
>>>
>>> 1. list.sats:
>>> #include "share/atspre_define.hats"
>>> #include "share/atspre_staload.hats"
>>>
>>> #define :: list_cons
>>>
>>> datatype list (t@ype+, int) =
>>> | {a : t@ype} list_nil (a, 0) of ()
>>> | {a : t@ype} {n : nat} list_cons (a, n + 1) of (a, list (a, n))
>>>
>>> fun {a : t@ype} list_length {n : nat} (xs : list (a, n)) : size_t n
>>>
>>> 2. list.dats:
>>> #include "share/atspre_define.hats"
>>> #include "share/atspre_staload.hats"
>>>
>>> staload "list.sats"
>>>
>>> implement {a} list_length {n} (xs) = let
>>>   val zero : size_t 0 = 0UL
>>>   fun loop {
>>>     i, j : nat
>>>   } .<i>. (xs: list (a, i), count: size_t j) : size_t (i + j) =
>>>     case+ xs of
>>>     | list_nil () => count
>>>     | list_cons (_, xs0) => loop (xs0, count + 1)
>>> in
>>>   loop (xs, zero)
>>> end
>>>
>>> I get the following error:
>>>
>>> /home/bruno/prog/ats/mylib/list.dats: 143(line=7, offs=7) --
>>> 158(line=7, offs=22): warning(3): the constraint
>>> [S2Eeqeq(S2Eextkind(atstype_ulint); S2Eextkind(atstype_size))] cannot
>>> be translated into a form accepted by the constraint solver.
>>> /home/bruno/prog/ats/mylib/list.dats: 143(line=7, offs=7) --
>>> 158(line=7, offs=22): error(3): unsolved constraint: C3NSTRprop(C3TKmain();
>>> S2Eeqeq(S2Eextkind(atstype_ulint); S2Eextkind(atstype_size)))
>>> /home/bruno/prog/ats/mylib/list.dats: 365(line=15, offs=13) --
>>> 369(line=15, offs=17): warning(3): the constraint
>>> [S2Eeqeq(S2Eextkind(atstype_ulint); S2Eextkind(atstype_size))] cannot
>>> be translated into a form accepted by the constraint solver.
>>> typechecking has failed: there are some unsolved constraints: please
>>> inspect the above reported error message(s) for information.
>>> exit(ATS): uncaught exception: _2tmp_2ATS_2dPostiats_2src_2pa
>>> ts_error_2esats__FatalErrorExn(1025)
>>>
>>> If I remove the suffix on the zero literal 0UL, I get the following
>>> error:
>>>
>>> /home/bruno/prog/ats/mylib/list.dats: 143(line=7, offs=7) --
>>> 158(line=7, offs=22): error(3): the pattern cannot be given the ascribed
>>> type.
>>> /home/bruno/prog/ats/mylib/list.dats: 143(line=7, offs=7) --
>>> 158(line=7, offs=22): error(3): mismatch of static terms (tyleq):
>>> The actual term is: S2Eapp(S2Ecst(g1int_int_t0ype);
>>> S2Eextkind(atstype_int), S2Eintinf(0))
>>> The needed term is: S2Eapp(S2Ecst(g1uint_int_t0ype);
>>> S2Eextkind(atstype_size), S2Eintinf(0))
>>> /home/bruno/prog/ats/mylib/list.dats: 363(line=15, offs=13) --
>>> 367(line=15, offs=17): error(3): the dynamic expression cannot be assigned
>>> the type [S2Eapp(S2Ecst(g1uint_int_t0ype); S2Eextkind(atstype_size),
>>> S2EVar(5243))].
>>> /home/bruno/prog/ats/mylib/list.dats: 363(line=15, offs=13) --
>>> 367(line=15, offs=17): error(3): mismatch of static terms (tyleq):
>>> The actual term is: S2Eapp(S2Ecst(g1int_int_t0ype);
>>> S2Eextkind(atstype_int), S2Eintinf(0))
>>> The needed term is: S2Eapp(S2Ecst(g1uint_int_t0ype);
>>> S2Eextkind(atstype_size), S2EVar(5243))
>>> patsopt(TRANS3): there are [2] errors in total.
>>> exit(ATS): uncaught exception: _2tmp_2ATS_2dPostiats_2src_2pa
>>> ts_error_2esats__FatalErrorExn(1025)
>>>
>>> If I change the type from size_t to int (and also the suffix in the
>>> literal), the code typechecks.
>>>
>>> --
>>> 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 ats-lang-user...@googlegroups.com.
>>> To post to this group, send email to ats-lan...@googlegroups.com.
>>> Visit this group at https://groups.google.com/group/ats-lang-users.
>>> To view this discussion on the web visit https://groups.google.com/d/ms
>>> gid/ats-lang-users/7d4f8c0b-de8b-4006-8734-65f2d2a5b485%40go
>>> oglegroups.com
>>> <https://groups.google.com/d/msgid/ats-lang-users/7d4f8c0b-de8b-4006-8734-65f2d2a5b485%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 ats-lang-users+unsubscr...@googlegroups.com.
> To post to this group, send email to ats-lang-users@googlegroups.com.
> Visit this group at https://groups.google.com/group/ats-lang-users.
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/ats-lang-users/45194efc-7dae-4f13-b470-0758358d1d72%
> 40googlegroups.com
> <https://groups.google.com/d/msgid/ats-lang-users/45194efc-7dae-4f13-b470-0758358d1d72%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 ats-lang-users+unsubscr...@googlegroups.com.
To post to this group, send email to ats-lang-users@googlegroups.com.
Visit this group at https://groups.google.com/group/ats-lang-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ats-lang-users/CAPPSPLrC%2BNHmJgLeps7NT19htxqQFrxWPoLVkMp%3Dz6SsJkPyug%40mail.gmail.com.

Reply via email to