Hi,
ATS2 supports either generic template implementation or fully specified:
So if I have template function like this:
```
extern fn
{a: t@ype}
{acc:viewt@ype+}
{cont: (t@ype, int) -> t@ype}
foldl
{n:nat}
( xs: cont(a,n)
, acc: acc
):
acc
```
I can't defined partially specialized generic implementation like this:
```
extern fn
<a:t@ype>
<acc:viewt@ype+>
foldl_list
{n:nat}
( xs: list(a,n)
, acc: acc
):
acc
implement {a}{acc}foldl<list>(xs, acc) = foldl_list<a><acc>(xs, acc)
```
as compiler asks to provide full set of template arguments
and this:
```
implement {a}{acc}{cont}foldl<a><acc><list>(xs, acc) = foldl_list<a><acc>(xs, acc)
```
is not working as well (compiler complains on "redundant arguments")
Will ATS3 support such partially specialized generic implementations?
Or maybe will it support this kind of partial specialization?
```
extern fn
{a: t@ype}
{acc:viewt@ype+}
{cont: t@ype}
foldl1
( xs: cont
, acc: acc
):
acc
implement foldl1<[a:t@ype]a><[acc:viewt@ype+]acc><List0(a)>(xs, acc) = foldl_list(xs, acc)
```