(j3.2006) Invoking type-bound function using the result of another one

Tom Clune Thomas.L.Clune
Fri Jan 8 08:49:56 EST 2016


Apologies for my C++ accent.

I meant ?chaining of invocations of type-bound procedures?.

> On Jan 8, 2016, at 8:46 AM, Tom Clune <Thomas.L.Clune at nasa.gov> wrote:
> 
> Damian and I have also advocated that the constraints be weakened to somehow allow such chaining of methods.   If there are technical reasons why that particular syntax won?t work, then it seems e could come up with something that is only slightly more verbose.
> 
> 
>> On Jan 7, 2016, at 9:59 PM, Van Snyder <Van.Snyder at jpl.nasa.gov <mailto:Van.Snyder at jpl.nasa.gov>> wrote:
>> 
>> Given:
>> 
>> Types T1 and T2 with type-bound functions F1 and F2, respectively.
>> 
>> F1 and F2 have arguments of class T1 and T2 respectively.
>> 
>> F1 and F2 are also accessible on their own.
>> 
>> F1 has a result of type T2.
>> 
>> X1 is a variable of type T1.
>> 
>> Then I can invoke f2(f1(x1)), but I cannot invoke x1%f1()%f2(), i.e.,
>> type-bound function composition is prohibited.
>> 
>> Other than our traditional aversion to selecting components of function
>> results, or more generally to selecting components of expression values,
>> was there a technical reason to prohibit this?
>> 
>> module M
>> 
>>  type T1
>>  contains
>>    procedure :: F1
>>  end type T1
>> 
>>  type T2
>>  contains
>>    procedure :: F2
>>  end type T2
>> 
>> contains
>> 
>>  type(t2) function F1 ( A )
>>    class(t1), intent(in) :: A
>>    ...
>>  end funciton F1
>> 
>>  real function F2 ( A )
>>    class(t2), intent(in) :: A
>>    ...
>>  end function H2
>> 
>> end module M
>> 
>> program P
>> 
>>  use M
>>  type(t1) :: X1
>>  print *, f2(f1(x1))
>> ! print *, x1%f1()%f2()        ! Prohibited (why?)
>> 
>> end program P
>> 
>> 
>> _______________________________________________
>> J3 mailing list
>> J3 at mailman.j3-fortran.org <mailto:J3 at mailman.j3-fortran.org>
>> http://mailman.j3-fortran.org/mailman/listinfo/j3
> 
> Thomas Clune, Ph. D. 	<Thomas.L.Clune at nasa.gov <mailto:Thomas.L.Clune at nasa.gov>>
> Software Infrastructure Team Lead
> Global Modeling and Assimilation Office, Code 610.1
> NASA GSFC		
> MS 610.1 B33-C128
> Greenbelt, MD 20771
> 301-286-4635
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> _______________________________________________
> J3 mailing list
> J3 at mailman.j3-fortran.org
> http://mailman.j3-fortran.org/mailman/listinfo/j3

Thomas Clune, Ph. D. 	<Thomas.L.Clune at nasa.gov>
Software Infrastructure Team Lead
Global Modeling and Assimilation Office, Code 610.1
NASA GSFC		
MS 610.1 B33-C128
Greenbelt, MD 20771
301-286-4635













-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.j3-fortran.org/pipermail/j3/attachments/20160108/0ad33f1a/attachment-0003.html 



More information about the J3 mailing list