Home
F#
EntryPoint, Command-Line Arguments
Updated Nov 23, 2023
Dot Net Perls
EntryPoint. An F# program must start somewhere—we can use the EntryPoint type annotation for this purpose. EntryPoint designates the initial method of a program.
With this attribute, a method is executed at program initiation. And any arguments to the command-line are passed as a string array to the program.
This program specifies a main function, and uses the EntryPoint type annotation upon it. When we run the program with "dotnet run" main is executed.
Step 1 With a for-do loop, we iterate over the arguments passed after the "dotnet run" command.
for
Step 2 Inside a string interpolation expression, we invoke the formatArgument function on each string argument.
Step 3 In formatArgument, we call 2 separate functions in a pipeline on the argument.
Step 4 This function (spaceOut) spaces out the argument string with some string logic involving a char array.
String
Step 5 We write the length of the arguments array (argv) which is 2 in this case (the program's file name is not included in the array).
Step 6 For the main method, we are supposed to return an integer value to indicate success—0 is acceptable.
let uppercase (argument : string) = argument.ToUpper() let spaceOut (argument : string) = // Step 4: place a space in between each character. let mutable chars = Array.create (argument.Length * 2) ' ' for i = 0 to argument.Length - 1 do chars[i * 2] <- argument[i] new string(chars) let formatArgument (argument : string) = // Step 3: call pipelined functions to format an argument. argument |> uppercase |> spaceOut [<EntryPoint>] let main argv = // Step 1: loop over arguments to program. for arg in argv do // Step 2: format each argument with a function. printfn $"ARG IS {formatArgument(arg)}" // Step 5: write the Length. printfn $"LENGTH: {argv.Length}" // Step 6: return 0. 0
dotnet run argument1 argument2 ARG IS A R G U M E N T 1 ARG IS A R G U M E N T 2 LENGTH: 2
Indeterminate type error. Consider this F# compile error—it occurs when a program has no EntryPoint. We can correct the problem with an EntryPoint type annotation.
.../Program.fs(23,24): error FS0072: Lookup on object of indeterminate type based on information prior to this program point. A type annotation may be needed prior to this program point to constrain the type of the object. This may allow the lookup to be resolved.
Many F# programs that are used in the real world will be command-line applications. They receive arguments, and print out values (or write files).
Dot Net Perls is a collection of pages with code examples, which are updated to stay current. Programming is an art, and it can be learned from examples.
Donate to this site to help offset the costs of running the server. Sites like this will cease to exist if there is no financial support for them.
Sam Allen is passionate about computer languages, and he maintains 100% of the material available on this website. He hopes it makes the world a nicer place.
This page was last updated on Nov 23, 2023 (new).
Home
Changes
© 2007-2025 Sam Allen