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.

Reply via email to