まずは Program.fs を定義

非同期処理+ポーリングによる60秒制限を盛り込みました。
ポーリングは苦肉の策です。
これ以外に書き方が分からない・・・・
後エラー処理も取ってしまう羽目に、どうしたものか

open System
open System.Diagnostics
open Common

// モジュール名を変える事で別の問題の解答を取得出来る
let getAnswer =
    async {
        let answer = Lesson_006.run()
        printfn "%A" answer
        Async.CancelDefaultToken()
    }

let main() =

    // 非同期キャンセル情報
    let token = Async.DefaultCancellationToken
    let stopWatch = new Stopwatch()
    
    // ポーリングの定義
    let rec polling () =
        if not token.IsCancellationRequested then
            let msec = stopWatch.ElapsedMilliseconds
            if (msec <= 60000L) then
                polling ()

    stopWatch.Start()
    
    // 非同期の実行
    Async.Start (getAnswer, token)

    // ポーリング監視
    polling ()

    // 非同期処理のキャンセル
    Async.CancelDefaultToken()

    stopWatch.Stop();
    printf "%d ms" stopWatch.ElapsedMilliseconds
    ()

main()

///////////////////////////////////////////
// 過去コード
///////////////////////////////////////////

// モジュール名を変える事で別の問題の解答を取得出来る
let getAnswer () =
    let answer = Problem_0002.run()
    printfn "%A" answer


open System.Diagnostics
let main() =
    let stopWatch = new Stopwatch()
    stopWatch.Start()

    // 実際の処理
    getAnswer()

    stopWatch.Stop();
    printf "%d ms" stopWatch.ElapsedMilliseconds
    ()

main()