Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
The Intel sign-in experience is changing in February to support enhanced security controls. If you sign in, click here for more information.
27549 Discussions

PURE function with EXTERNAL function as argument

mohanmuthu
New Contributor I
295 Views

I am trying to pass a pure function as an argument to another pure function. Is it permissible?

 

For example,

pure integer function func1(func2, arg2)
    external func2
    integer, intent(in) arg2
    func1 = func2(arg2)
end function func1

pure integer function func1(arg1)
    integer, intent(in) arg1
    func1 = arg1*arg1
end function func1

 I attempted it, but I'm getting an error that the external procedure must be declared pure. If its permissible, how to define the external function as pure.

1 Solution
Arjen_Markus
Honored Contributor I
278 Views

Rather than specifying func2 as an external, you should specify the exact interface:

interface 
    pure integer function func2( arg )
        integer, intent(in) :: arg
    end function func2
end interface

Otherwise the compiler has no way of knowing what the function argument is doing.

View solution in original post

2 Replies
Arjen_Markus
Honored Contributor I
279 Views

Rather than specifying func2 as an external, you should specify the exact interface:

interface 
    pure integer function func2( arg )
        integer, intent(in) :: arg
    end function func2
end interface

Otherwise the compiler has no way of knowing what the function argument is doing.

mohanmuthu
New Contributor I
258 Views

Thank you Arjen_Markus, I could make it work with your solution.

Reply