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.