Here is some code that typechecks:

implement add_heads(a,b) =
  case (a,b) of
  | (~None_vt(),g) => g
  | (l, ~None_vt()) => l
  | (~Some_vt(~nested(~Some_vt(~list_vt_cons(x,xs)))),
     ~Some_vt(~nested(~Some_vt(~list_vt_cons(y,ys))))) =>
    (free(xs); Some_vt(nested(Some_vt(list_vt_cons(x+y,ys)))))

Some warnings are issued due to non-exhaustiveness of pattern matching
involved.



On Tue, May 15, 2018 at 10:27 PM, aditya siram <aditya.si...@gmail.com>
wrote:

>
> #include "share/atspre_staload.hats"
>
> datavtype nested = nested of (Option_vt(List_vt(int)))
>
> extern fun add_heads(
>   a : Option_vt(nested),
>   b : Option_vt(nested)
> ): Option_vt(nested)
>
> implement add_heads(a,b) =
>   case (a,b) of
>     | (~None_vt(),g) => g
>     | (l, ~None_vt()) => l
>     | (Some_vt(nested(Some_vt(list_vt_cons(x,_)))),
>          Some_vt(nested(Some_vt(list_vt_cons(y,ys))))) =>
>        Some_vt(nested(Some_vt(list_vt_cons(x+y,ys))))
>
> implement main0(argc,argv) = ()
>
>
> The above is a minimal non-compiling example from a larger program. I even
> tried adding '@' to the pattern match with 'fold@' in the body but it
> didn't work.
>
> Thanks!
>
> On Tuesday, May 15, 2018 at 8:28:33 PM UTC-5, gmhwxi wrote:
>>
>> Oops. I am NOT so clear ...
>>
>> On Tue, May 15, 2018 at 9:27 PM, Hongwei Xi <gmh...@gmail.com> wrote:
>>
>>> I am so clear as to what you need precisely.
>>>
>>> Could you show me how to do it using pattern matching repeatly?
>>> Then I may be able to do it using a nested pattern.
>>>
>>> Here is an example that may be useful:
>>>
>>> | ~Some_vt(~Some_vt(xs as list_vt_cons _)) => // using xs here
>>>
>>> The two Some_vt constructors are freed but list_vt_cons is not.
>>>
>>> On Tue, May 15, 2018 at 9:04 PM, aditya siram <aditya...@gmail.com>
>>> wrote:
>>>
>>>> Hi all,
>>>> I'm sure there's an easy answer to this but I'm not having much luck.
>>>> How do I destructure into a view type that nested in another viewtype? For
>>>> example, I'd to pattern match on something of type
>>>> 'Option_vt(Option_vt(list_vt int))'. I'm not having much luck doing it in
>>>> one fell swoop like: ' | Some_vt(Some_vt(list_vt_cons(x, xs))) => ...'
>>>> especially when the linear proof of some inner value (like 'x') needs to be
>>>> preserved.
>>>>
>>>> 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 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/e196b40c-7b12-45f1-abe6-4edb9d4bf3fd%40go
>>>> oglegroups.com
>>>> <https://groups.google.com/d/msgid/ats-lang-users/e196b40c-7b12-45f1-abe6-4edb9d4bf3fd%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/46a9a11a-362c-426b-b479-5537a0a5aa8e%
> 40googlegroups.com
> <https://groups.google.com/d/msgid/ats-lang-users/46a9a11a-362c-426b-b479-5537a0a5aa8e%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/CAPPSPLoA8NgXPLNsM_RpDokDBWGadAd9QBCjHOoqam5W18yAjg%40mail.gmail.com.

Reply via email to