CodeMateに統合された Ruby で fortran テンプレートを実装しました。テンプレートの構文は C++ に似ています。二重リンクリストを実装しました。テンプレート定義のスニペットは次のとおりです。
...
template:list_t <type elem_t>
type list_t
integer :: num_elem = 0
type(elem_t), pointer :: head, tail
contains
...
procedure :: insert => list_insert
...
end type list
...
template:list_insert@list_t <type elem_t>
subroutine list_insert(this, elem, ...)
class(list_t), intent(inout) :: this
type(elem_t), intent(out), pointer :: elem
...
end subroutine list_insert
テンプレートのインスタンスは次のとおりです。
type(list_t<foo_t>) foo_list
はfoo_t
、 を拡張するユーザー定義型ですlist_elem_t<foo_t>
。foo_list
によって要素を挿入できます
call foo_list%insert(elem, ...)
Fortran テンプレートに対する私の解決策は自然だと思います。