Most of the lessons I had in mind are technical in nature.

For instance, template parameter instantiation is currently done
after type-checking, making it very difficult to mix dependent types
with templates. A related issue is that only types can be template
parameters noe but there are strong cases where one wants integers, for
example. I can go on and on but these things tend to be very technical.


On Sun, Dec 10, 2017 at 6:01 PM, aditya siram <[email protected]>
wrote:

> Can you share some of those lessons?
>
> On Sunday, December 10, 2017 at 3:34:54 PM UTC-6, gmhwxi wrote:
>>
>> Right, it is just a convention.
>>
>> Templates are mostly an experimental feature in ATS.
>> I find them to be extremely useful, though. There are a lot
>> of learned lessons on templates that can be readily put into
>> the next version of ATS, if there is ever going to be one :)
>>
>>
>> On Sun, Dec 10, 2017 at 3:40 PM, aditya siram <[email protected]>
>> wrote:
>>
>>> Oh, cool, thanks!
>>>
>>> Another thing I just noticed that was a little confusion was that the
>>> '$fopr' and '$cont' naming used in the source is just convention, I can
>>> change it to anything and still seem to get the same results. Not saying
>>> it's a problem, just didn't know.
>>>
>>>
>>> On Sunday, December 10, 2017 at 2:19:27 PM UTC-6, gmhwxi wrote:
>>>>
>>>> It works.
>>>>
>>>> You need '{}' and '<>'
>>>>
>>>> extern fun{} list_map(...): ...
>>>>
>>>> implement list_map<>(...) = ...
>>>>
>>>> On Sun, Dec 10, 2017 at 3:12 PM, aditya siram <[email protected]>
>>>> wrote:
>>>>
>>>>> Hi,
>>>>> I was following along with the templates as functors part of the
>>>>> tutorial (http://ats-lang.sourceforge.net/DOCUMENT/INT2PROGINATS/HTML
>>>>> /INT2PROGINATS-BOOK-onechunk.html#templates-as-a-special-
>>>>> form-of-functors) and the provided example works fine, but if I
>>>>> removed all the template arguments and specialized the function arguments
>>>>> to 'int' and change 'list_map_fun' to always increment the int:
>>>>> extern fun list_map{n:nat} (xs: list(int, n)): list_vt(int, n)
>>>>> extern fun list_map$fopr(x: int): int
>>>>> implement list_map (xs) =
>>>>>   let
>>>>>     fun aux{n:nat}
>>>>>          (xs: list(int, n)): list_vt(int, n) =
>>>>>       (
>>>>>         case+ xs of
>>>>>         | list_nil() => list_vt_nil()
>>>>>         | list_cons(x, xs) => list_vt_cons(list_map$fopr(x), aux(xs))
>>>>>       )
>>>>> in
>>>>>   aux(xs)
>>>>> end
>>>>> extern fun list_map_fun{n:nat} (xs: list(int, n)): list_vt(int, n)
>>>>> implement list_map_fun(xs) =
>>>>> let
>>>>>   implement list_map$fopr(x) = x + 1
>>>>> in
>>>>>   list_map (xs)
>>>>> end
>>>>>
>>>>> Now I get following error on the 'implement list_map$fopr(x) = x + 1'
>>>>> line:
>>>>> ...: the implementation should be at the top-level but it is not.Enter
>>>>> code here...
>>>>>
>>>>> Does this approach not work when templates have no polymorphic
>>>>> arguments?
>>>>> Thanks!
>>>>>
>>>>> --
>>>>> 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 post to this group, send email to [email protected].
>>>>> 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/c9cdbd1c-35
>>>>> 32-4512-afcf-2acf040cccba%40googlegroups.com
>>>>> <https://groups.google.com/d/msgid/ats-lang-users/c9cdbd1c-3532-4512-afcf-2acf040cccba%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 post to this group, send email to [email protected].
>>> 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/d730fe08-7469-4349-8809-fec1a9826f91%40go
>>> oglegroups.com
>>> <https://groups.google.com/d/msgid/ats-lang-users/d730fe08-7469-4349-8809-fec1a9826f91%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 post to this group, send email to [email protected].
> 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/c7885759-c97b-482e-a9a8-313152cc1e6b%
> 40googlegroups.com
> <https://groups.google.com/d/msgid/ats-lang-users/c7885759-c97b-482e-a9a8-313152cc1e6b%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 post to this group, send email to [email protected].
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/CAPPSPLpRMrsZ5M3YxkpPg6muJSeTASnGM5Uu2rz%2BeV8vf%2B23vA%40mail.gmail.com.

Reply via email to