- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you Arjen_Markus, I could make it work with your solution.
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page