Is it possible to write (proof) functions from datasorts to datasorts? For 
example, if we have

datasort tlist =
  | tnil
  | tcons(t0ype, tlist)

it would be nice to write something equivalent to

tlist_append : (tlist, tlist) -> tlist
tlist_filter: (tlist, (tlist) -> bool) -> tlist

that could be applied to a tlist directly. I ask because I was playing 
around with templates, and it turns out you can write templates like

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

implement foo<tnil>() = ()
implement(a,ts) foo<tcons(a,ts)>() = (foo$fopr<a>(); foo<ts>())

that compile and do what you expect. 

It would be nice to implement things like tlist_append in some non-template 
way, because templates force you to transform everything into continuation 
passing style, which hampers composition and is quite verbose.

I have to say that if there were a few built-in functions from types to 
datasorts (e.g. various queries on type definitions, serialize type/record 
field to value-level string, etc.), a convenient way to write functions 
directly between datasorts, and a few more niceties, you could get really, 
really far in terms of metaprogramming.

PS the error messages arising from this datasort-based template 
metaprogramming are already light years ahead of C++, believe it or not :)

-- 
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/2a781501-946c-48d0-8535-a2545ebce689%40googlegroups.com.

Reply via email to