Hi, In `stream_vt.dats`, I saw the following snippets,
fun {a:vt0p} {b:vt0p} stream_vt_map_con (xs: stream_vt (a)) : stream_vt_con (b) = let val xs_con = !xs in case+ xs_con of | @stream_vt_cons(x, xs) => let val y = stream_vt_map$fopr<a><b> (x) // fopr is of type {a,b:vt@ype} &a >> a?! -> b val xs = xs val () = free@ (xs_con) in stream_vt_cons{b}(y, stream_vt_map<a><b> (xs)) end | ~stream_vt_nil((*void*)) => stream_vt_nil() end and I have three questions. 1. what is a?! 2. why fopr takes &a, instead of just a? 3. what happened when val xs = xs 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-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/a443c141-c62d-49a3-88d9-68ab64640cbb%40googlegroups.com.