Hi Andrew,

Many thanks for all these questions and links. Very thoughtful!

Besides being a programming language for people to write code in,
I certainly hope that ATS3 can also be a platform for you (and others)
to try out ideas (e.g., those you mentioned).

It may sound a bit strange but I do see ATS as some sort of high-level
assembly language as well.

>>give existing code new meaning...

Or I would call it a form of late-binding. As Alan Kay put it: extreme
late-binding
of all kinds.

>>A goal would be reinterpreting subprograms to work on vectors ("SPMD on
SIMD")

I think ATS3 should provide a suitable platform for trying it out.

To a large extent, the template system of ATS tries to facilitate
reinterpretation of
programs. I give an argument in support of this practice in the following
short article:

http://ats-lang.sourceforge.net/EXAMPLE/EFFECTIVATS/
DivideConquerPar/main.html

Again, many thanks. This message will definitely be revisited later when
ATS3 reaches
a stage for experimentation.

Cheers!



On Sun, Aug 5, 2018 at 1:13 AM, Andrew Knapp <andy.j.kn...@gmail.com> wrote:

> Just some miscellaneous thoughts and questions.
>
> - Here's a paper ("Beyond Type Classes") that I found interesting. It's a
> generalization of Haskell's type class system that does type-directed
> overloading via user-defined Constraint Handling Rules (CHRs). It fits
> nicely with the logic metaprogramming idea, and it seems like something
> that would complement embeddable templates really nicely. Not sure about
> the type inference story.
>
> https://pdfs.semanticscholar.org/ba5c/7c7c719f5e6980b18147d19b5c3111
> 3fbb80.pdf
>
> - Getting the compiler to understand the idea of flat storage underneath a
> data(view)type would be really, really helpful. For example, I would like
> versions of constructors to be generated that take a pointer to
> datatype-specific flat storage, so you don't have to use malloc to
> construct something. Here's a quick and dirty example of what I'd like to
> see the compiler do.
>
> datavtype foo =
> | Bar of (int,int)
> | Baz of (string, double)
>
> // compiler would automatically generate an abstract type foo_  (foo flat)
> // which represents a union of Bar_pstruct(int,int) and
> Baz_pstruct(string,double).
> // the compiler would also generate
>
> symintr Bar Baz
>
> fn Bar_default(int, int):<> foo
> fn Baz_default(string, double):<> foo
>
> fn Bar_flat{l:addr}(!foo_?@l | ptr(l), int, int):<> foo
> fn Baz_flat{l:addr}(!foo_?@l | ptr(l), string, double):<> foo
>
> overload Baz Baz_default
> overload Baz Baz_flat
> overload Bar Bar_default
> overload Baz Bar_flat
>
> - Something like $d2ctype that gives the type of an arbitrary expression
> would be nice, as would a $tyrep that gave you a sort-level type
> description for use in templates.
>
> - Support for heterogeneous metaprogramming - sometimes it would be
> convenient to generate things in another language, or more generally, give
> existing code new meaning. This is probably the slickest thing I've used
> for doing that, but I don't think it would work as well in an impure
> language like ATS.
>
> http://conal.net/papers/compiling-to-categories/
> compiling-to-categories.pdf
>
> A goal would be reinterpreting subprograms to work on vectors ("SPMD on
> SIMD") - Edward Kmett talked about this a while ago, and he's about to
> start implementing it in a new functional language he'll be working on
> full-time. See also the Intel SPMD Program Compiler.
>
> https://www.youtube.com/watch?v=KzqNQMpRbac
>
> https://ispc.github.io/
>
> - Here's a few things I think are good test cases for evaluating
> metaprogramming capabilities. How do you see ATS3 solving the following
> problems, if at all?
>
> * automatically deriving (de)serialization for records and datatypes
>
> * generating parsers or API bindings from an XML description (sadly, XML
> is how many such things are provided)
>
> * given a skeleton of an algorithm for, say, matrix multiplication
> (parameterized by things like loop tiling depth, unrolling amount, etc.),
> generate a bunch of instantiations with different parameter choices, run
> and benchmark them, and use/save the best one
>
> --
> 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/c137a67c-3a81-4b3b-a34d-d579b32bd665%
> 40googlegroups.com
> <https://groups.google.com/d/msgid/ats-lang-users/c137a67c-3a81-4b3b-a34d-d579b32bd665%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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/CAPPSPLpJjNqbqXW1u8bLxePkey5ScddsN3TSOqMe_GyNA4u7Sw%40mail.gmail.com.

Reply via email to