Ah thanks for letting me know that.

But my question was more about writing functions that can operate on any 
types that can be parameterized by other types. For example in Haskell a 
type 'm a' may stand in for 'stream_vt(a)', 'list_vt(a)' and so on and the 
function 'join' of type 'm (m a) -> m a' would equivalent of the 
'glseq_concat' that I'm trying to implement. From your answer I guess there 
is no way to abstract similarly in ATS?

Thanks!


On Sunday, June 2, 2019 at 4:26:58 PM UTC-5, gmhwxi wrote:
>
> Say we have glseq_...<xs><x0>.
>
> The idea is that xs can be treated as the type for a sequence containing 
> elements of type x.
>
> For 'concat', we may have
>
> fun{xx:vtflt}{xs:vtflt}{x0:vtflt} glseq_concat_stream(xx): stream_vt(x0)
>
> As 'concat' returns a sequence, it can have a eager version (list) and 
> also a lazy version (stream).
> The above one is the stream version. The basic idea is: xx can be seen as 
> a sequence of xs,
> and xs can be seen as a sequence of x0.
>
> I added an implemention in the following directory:
>
>
> https://github.com/githwxi/ATS-Temptory/blob/master/libats/temp/bucs320/DATS/glseq.dats
>
> BUCS320 is a class I have taught for years. Code put in the above 
> directory usually do not involve
> dependent types (but do involve linear types). Fancier code gets to be put 
> in libats/temp/bucs520.
>
>
>
> On Sun, Jun 2, 2019 at 3:39 PM aditya siram <adity...@gmail.com 
> <javascript:>> wrote:
>
>> Hi,
>> I'm working with ATS-Temptory and trying to add a function, 
>> 'glseq_concat', which generalizes over, for example:
>>
>>
>> fun
>> {a:vtflt}
>> steam_vt_concat(stream_vt(stream_vt(a))): stream_vt(a)
>>
>> but I can't find a way of passing in a general type that is parameterized 
>> in a type. I want to write:
>>
>> extern fun
>> {xs: ...}
>> {x: ...}
>> glseq_concat
>>   (a:xs(xs(x))):xs(x)
>>
>>
>> Is there any way to encode this?
>>
>> -- 
>> 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-lan...@googlegroups.com <javascript:>.
>> To post to this group, send email to ats-lan...@googlegroups.com 
>> <javascript:>.
>> 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/b3fdf7fc-0a2e-4f86-8eb6-8a084330f518%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/ats-lang-users/b3fdf7fc-0a2e-4f86-8eb6-8a084330f518%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/a93d6fbb-7f2e-4dc9-a1e6-0d90d16d9d9a%40googlegroups.com.

Reply via email to