Skip to content

Detect the 'entry' script in F# scripts #658

Open
@onionhammer

Description

@onionhammer

I propose we add syntax to detect whether the current F# script is being run as the entry-point

#if __MAIN__
 .. Main code here
#endif

In Python it is quite easy - and very very common to include code like this

if __name__ == "__main__":
  ...

The reason it exists is to facilitate composability; being able to reuse functions of a script in other scripts without actually executing the segment underneath "main".

There is no way to do this presently when running an FSI script (correct me if I'm wrong)

Pros and Cons

The advantages of making this adjustment to F# are that it would allow improved re-use of F# scripts by #loading them into other scripts

Affidavit (please submit!)

Please tick this by placing a cross in the box:

  • This is not a question (e.g. like one you might ask on stackoverflow) and I have searched stackoverflow for discussions of this issue
  • I have searched both open and closed suggestions on this site and believe this is not a duplicate
  • This is not something which has obviously "already been decided" in previous versions of F#. If you're questioning a fundamental design decision that has obviously already been taken (e.g. "Make F# untyped") then please don't submit it.

Please tick all that apply:

  • This is not a breaking change to the F# language design
  • I or my company would be willing to help implement and/or test this

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions