Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29231 ディスカッション

PURE function with EXTERNAL function as argument

mohanmuthu
新規コントリビューター I
830件の閲覧回数

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 解決策
Arjen_Markus
名誉コントリビューター II
813件の閲覧回数

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.

元の投稿で解決策を見る

2 返答(返信)
Arjen_Markus
名誉コントリビューター II
814件の閲覧回数

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
新規コントリビューター I
793件の閲覧回数

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

返信