I suppose there has been a fair bit of talk about syntax already.   I had 
been thinking a whitespace-significant  label-block structure (a-la Nim) 
might suit the language well, and some recent code sample inspired me to 
demonstrate. 

Original:
datasort tlist = tnil
| tcons of (t0ype, tlist)

extern fun {t:tlist} foo(): void
extern fun {a:t0ype} foo$fopr(): void

implement foo<tnil>() = ()
implement(a,ts) foo<tcons(a,ts)>() = {
  val () = foo$fopr<a>()
  val () = foo<ts>()
  val () = ignoret (1)
}

implement main0 () = let
  implement foo$fopr<int>() = println!("int")
  implement foo$fopr<string>() = println!("string")
  implement foo$fopr<bool>() = println!("bool")
  val () = println!("test 1: should print int, string")
  val () = foo<tcons(int, tcons(string, tnil))>()
  val () = println!("test 2: should print bool, int")
  val () = foo<tcons(bool, tcons(int, tnil))>()
in


Example:


datasort tlist = tnil
| tcons of (type, tlist)

extern 
   fun {t:tlist} foo(): void
   fun {a:type} foo$fopr(): void

impl 
    foo<tnil>() = ()

    (a,ts) foo<tcons(a,ts)>() = {
       val 
          () = foo$fopr<a>()
          () = foo<ts>()
          
     }

    main0 () = 
      let
         impl 
            foo$fopr<int>() = println!("int")
            foo$fopr<string>() = println!("string")
            foo$fopr<bool>() = println!("bool")
         val 
            () = println!("test 1: should print int, string")
            () = foo<tcons(int, tcons(string, tnil))>()
            () = println!("test 2: should print bool, int")
            () = foo<tcons(bool, tcons(int, tnil))>()
         in ()

I guess the good thing here is that it's 99% ATS2.  Of course, there are 
likely plenty of issues, including whitespace-significance (I was hesitant 
to post something this concrete). 

-- 
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/7a7e5e9d-5267-4499-9ebf-9ea51aeb2212%40googlegroups.com.

Reply via email to