Skip to content

Why has the chosen system resulted in requiring manual instantiation? #107

@dacarnazzola

Description

@dacarnazzola

This seems like a consequence of choosing to parameterize entire modules (and permitting nesting of templates) rather than the approaches taken by other modern languages (see the comparison to Go, Rust, Haskell).

What was the driving motivation behind such a system design? I find the manual instantiation of templates absolutely terrible for users of the language, and showing a seeming disregard for those that came before. Go, Rust, and Swift all have generic systems with "strong concepts," based around common interfaces and composition. Yet, the proposal for Fortran looks most similar to C++ templates, the only system brought up as a bad example (specifically due to "no concepts," followed by "concepts light").

This has been a large group effort by many experienced, well educated, and well meaning people - so I am confused what logic lead us to the current point.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions