--
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 http://groups.google.com/group/ats-lang-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/ats-lang-users/bd8b79fe-1c78-4fd8-a392-ed7d05bd1eb8%40googlegroups.com.
--
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 http://groups.google.com/group/ats-lang-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/ats-lang-users/17202669-61e6-4254-9347-403069db24f2%40googlegroups.com.
extern
fun
foo
(
&int >> int(1), &int >> int(2)
) : void
val () =
let var c: int = 0 in foo (c, c) end
// end of [val]
The following code typechecks in ATS2:
extern
fun
foo
(
&int >> int(1), &int >> int(2)
) : void
val () =
let var c: int = 0 in foo (c, c) end
// end of [val]
When I said "strictly speaking", I meant programming in the core of ATS,
where the interface of foo translates into the following version:
fun
foo{l1,l2:addr} (pf1: !int@l1, !pf2: !int@l2 | ptr(l1), ptr(l2)): void
With this translated interface, f(c, c) cannot be translated accordingly.
However, ATS2 is not so strict. Being so strict is morally right but it stifles programming.
Programming-first programming verification is what I really like to advocate.