comp.lang.ada
 help / color / mirror / Atom feed
From: "Peter C. Chapin" <pcc482719@gmail.com>
Subject: Re: Ada202X : Adding functors
Date: Thu, 15 Nov 2012 19:01:28 -0500
Date: 2012-11-15T19:01:28-05:00	[thread overview]
Message-ID: <WdGdnd-Z6-nFHzjN4p2dnAA@giganews.com> (raw)
In-Reply-To: <r00q8we9dpjp.1410izlwuflo3$.dlg@40tude.net>

On 11/15/2012 12:04 PM, Dmitry A. Kazakov wrote:

>> Could you elaborate on what you mean here? There are statically typed
>> functional languages where functions are first class and that also have
>> a reasonable notion of type safety.
>
> I think they are actually weakly typed.

In the functional language that I use the most (Scala) lambda terms are 
statically typed and fully checked at compile time, just like any other 
expression.

> Anyway, the issue is that functions are intimately related to the types of
> their arguments and results as primitive operations. Non-first class
> functions are singletons which ensures 1-1 mapping between the operation
> and the argument/result type. First-class functions would break that
> correspondence.

I guess I'm not understanding what you mean here.

> It is also unclear what happens with the operations defined on functional
> objects. What will be the types of function functions (functionals)? It is
> an infinite recursion of higher-order functions to stop somewhere.

If you have higher order functions then you will have a way to write 
function types. For example, in Scala:

def filter(someList: List[Int], predicate: Int => Boolean) = ...

This defines a function 'filter' that takes a list of integers and a 
function from Int to Boolean. The notation 'Int => Boolean' is a 
function type. And yes, you can write types like

	(Int => Boolean) => String

for functions taking a (function from Int to Boolean) and returning 
String. It's no big deal. After all you can use access to access types 
in Ada. You can use records containing records. If you want names for 
the intermediate types, create names for them:

	type PredicateType = Int => Boolean
	type PredicateProcessor = PredicateType => String

Peter




  parent reply	other threads:[~2012-11-16  0:01 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-12 22:09 Ada202X : Adding functors Martin
2012-11-12 23:14 ` Jeffrey Carter
2012-11-12 23:19   ` Martin
2012-11-13 10:45     ` Georg Bauhaus
2012-11-13 12:08       ` Yannick Duchêne (Hibou57)
2012-11-13 12:35       ` Martin
2012-11-12 23:44 ` Adam Beneschan
2012-11-13  2:11   ` Jeffrey Carter
2012-11-13 11:11   ` Martin
2012-11-14  0:51     ` Adam Beneschan
2012-11-14  8:39       ` Martin
2012-11-14 16:54         ` Adam Beneschan
2012-11-14 18:54           ` Martin
2012-11-14 20:37           ` Dmitry A. Kazakov
2012-11-14 20:57             ` Shark8
2012-11-14 21:31             ` Martin
2012-11-14 22:42               ` Adam Beneschan
2012-11-15  9:27               ` Dmitry A. Kazakov
2012-11-14 21:45             ` Simon Wright
2012-11-14 22:22               ` Martin
2012-11-14 22:27               ` Martin
2012-11-13  4:22 ` Shark8
2012-11-15  0:20 ` sbelmont700
2012-11-15  7:12   ` Martin
2012-11-15 12:21     ` Georg Bauhaus
2012-11-15 12:31     ` Georg Bauhaus
2012-11-15 12:46       ` Martin
2012-11-16  6:15       ` Randy Brukardt
2012-11-15 10:11   ` Dmitry A. Kazakov
2012-11-15 15:52     ` Peter C. Chapin
2012-11-15 17:04       ` Dmitry A. Kazakov
2012-11-15 19:57         ` Georg Bauhaus
2012-11-15 20:39           ` Dmitry A. Kazakov
2012-11-16  0:15             ` Peter C. Chapin
2012-11-16 10:12               ` Georg Bauhaus
2012-11-16  0:01         ` Peter C. Chapin [this message]
2012-11-16  6:09           ` Randy Brukardt
2012-11-16 12:35             ` Peter C. Chapin
2012-11-16 18:10               ` Martin
2012-11-16  8:59           ` Dmitry A. Kazakov
2012-11-16 12:20             ` Peter C. Chapin
2012-11-16 17:44               ` Dmitry A. Kazakov
2012-11-18 15:58                 ` Peter C. Chapin
2012-11-15 21:34     ` sbelmont700
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox