(j3.2006) Invoking type-bound function using the result of another one
Damian Rouson
damian
Fri Jan 8 10:27:27 EST 2016
As Tom suggests, I too am very interested in seeing responses to Van's question and I would be excited to see the proposed feature gain support.
D
Sent from my iPhone
> On Jan 8, 2016, at 5:49 AM, Tom Clune <Thomas.L.Clune at nasa.gov> wrote:
>
> 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> 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
>>> 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
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> 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
>
>
>
>
>
>
>
>
>
>
>
>
>
> _______________________________________________
> J3 mailing list
> J3 at mailman.j3-fortran.org
> http://mailman.j3-fortran.org/mailman/listinfo/j3
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.j3-fortran.org/pipermail/j3/attachments/20160108/8eb3547e/attachment-0003.html
More information about the J3
mailing list