Higher order functions and templates

24 visualizações
Pular para a primeira mensagem não lida

Mike Jones

não lida,
3 de jan. de 2016, 20:19:0303/01/2016
para ats-lang-users
The introduction has this statement:

In ATS2, linear closure-functions become much less important as programming with higher-order functions in a setting without GC can be more conveniently achieved through the use of templates.

I'm struggling to know why this conclusion. A higher order function takes a function as an argument, which is just a closure, or closure with no values in an environment. I can see that templates add flexibility in the signature of the closure as the template can take compatible parameters and be more generic, such as a generic map function.

But I don't understand how this makes closures less important.

A mensagem foi excluída
A mensagem foi excluída

gmhwxi

não lida,
3 de jan. de 2016, 20:41:5703/01/2016
para ats-lang-users

Maybe the last example on the homepage of ats-lang could shed some light:

http://www.ats-lang.org/

Mike Jones

não lida,
3 de jan. de 2016, 21:11:1703/01/2016
para ats-lang-users
Does the implement in a where clause only work for templates?

Mike Jones

não lida,
3 de jan. de 2016, 21:12:5603/01/2016
para ats-lang-users
And I assume the implement can't capture values like a closure because it has to compile everything up front. Correct?

Hongwei Xi

não lida,
3 de jan. de 2016, 21:33:4103/01/2016
para ats-lan...@googlegroups.com
You are right. It cannot.


On Sun, Jan 3, 2016 at 9:12 PM, Mike Jones <proc...@gmail.com> wrote:
And I assume the implement can't capture values like a closure because it has to compile everything up front. Correct?

--
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/6b75bdc8-619b-4295-af73-91f1b3c98a11%40googlegroups.com.

Mike Jones

não lida,
3 de jan. de 2016, 21:58:2303/01/2016
para ats-lang-users
And the implements functions must be templates? I'll guess yes, because template is a natural thing to expand.
Can the function around the implementations be a non template? I'll guess no, because the inner expansion probably relies on an outer expansion.

Where expand means instance.

gmhwxi

não lida,
3 de jan. de 2016, 22:23:4103/01/2016
para ats-lang-users

>>Can the function around the implementations be a non template?

Yes, it can be a non-template function.

It is very often that you want to implement a template inside a
non-template function. In this way, the template function gets to
access to the arguments of the non-template function.

Please take a look at wordcnt2.dats at the word-counting example:

http://ats-lang.sourceforge.net/EXAMPLE/EFFECTIVATS/

Using templates properly can greatly reduce complexity in programming.

Say someone is asked to implement the following example involving some drawing:

http://ats-lang.sourceforge.net/EXAMPLE/EFFECTIVATS/Sierpinski-3angle/Sierpinski-3angle.html

Most likely, the person would immediately think about the canvas. In my opinion, the person should
focus on drawing and forget about the canvas for a while. This is very easy to achieve with templates.

Having too much stuff on one's mind clutters the mind.
Responder a todos
Responder ao autor
Encaminhar
0 nova mensagem