When I designed DML (the predecessor of ATS), I employed a two-layeredapproach to typechecking: ML-like typechecking first and dependent typecheckingsecond. I abandoned this approach in ATS. Instead, there is only dependent typecheckingin ATS1 and ATS2. In ATS3, I plan to follow DML's two-layered approach. In particular,a program in ATS3 that passes ML-like typechecking can be compiled and executed. Soone can skip dependent typechecking in ATS3 if one so chooses. In this way, the learningcurve is expected to be greatly leveled. But there is much more than just leveling the learningcurve.
--
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/msgid/ats-lang-users/322ee442-1011-44ea-bdf7-2dd23ad137bd%40googlegroups.com.
>>Does this something other than the default stdlib avoiding dependent typing for array references,>>argc and argv, etc?Yes, this is one aspect.Say I write A[i]. If the typechecker tells me that there is a type-error because the index may be out-of-bounds,I am delighted because a possible bug is caught. Unfortunately, many people (e.g., many students I taught) thinkotherwise. They would rather have the code compiled so that they could debug it at run-time. I now feel that ATS3can be designed and implemented so that even people as such can benefit from using it.
#include "share/atspre_staload.hats"
implement main0(argc, argv) = println!(argv[1])
83(line=3, offs=45) -- 84(line=3, offs=46): error(3): unsolved constraint:
C3NSTRprop(C3TKmain(); S2Eapp(S2Ecst(<); S2EVar(5239->S2Eintinf(1)), S2Evar(n$3341(8448))))
83(line=3, offs=45) -- 84(line=3, offs=46): error(3): failed to prove n>1, from:
(* ****** ****** *)
//
fun
argv_get_at{n:int}
(argv: !argv(n), i: natLt(n)):<> string = "mac#%"
$ patsopt --constraint-ignore -o argv_dats.c -d argv.dats
$ patscc -o argv argv_dats.c
$ ./argv
(null)
Of course ATS is radically different from Oberon, but the one thing ATS fails to do is address programming "as a human activity". Once that is addressed I suspect ATS will take a noticeable chunk of the FOSS mindshare.
I'm impressed with ATS, but still using Spark and VHDL for my critical programming tasks.
Diogenes
--
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/msgid/ats-lang-users/19dc8f9d-2e5a-493a-882a-daa4e279bc1c%40googlegroups.com.
[…] Of course ATS is radically different from Oberon, but the one thing ATS fails to do is address programming "as a human activity". […]
[…]
I have been teaching ATS2 at Boston University for about 5 years. Thebiggest problem I see is the VERY steep learning curve associated with ATS2.Very few students were able to ever overcome it to reach the point where theycould truly start enjoying the power of (advanced) typechecking.When I designed DML (the predecessor of ATS), I employed a two-layeredapproach to typechecking: ML-like typechecking first and dependent typecheckingsecond. I abandoned this approach in ATS. Instead, there is only dependent typecheckingin ATS1 and ATS2. In ATS3, I plan to follow DML's two-layered approach. In particular,a program in ATS3 that passes ML-like typechecking can be compiled and executed. Soone can skip dependent typechecking in ATS3 if one so chooses. In this way, the learningcurve is expected to be greatly leveled. But there is much more than just leveling the learningcurve.
[…]