F# “如何返回”;无”;在Fsharp?

F# “如何返回”;无”;在Fsharp?,f#,F#,它只返回一些“”,但我需要返回“无” 我该怎么做 let cat(filenames: string list) : string option = try let b = filenames |> List.map (fun x -> (defaultArg (concat(x)) "")) Some (String.concat "" b) with _ -> None 它返回some”“,因为空列表不会导致异常。您需要在

它只返回一些“”,但我需要返回“无”

我该怎么做

let cat(filenames: string list) : string option =
    try
        let b = filenames |> List.map (fun x -> (defaultArg (concat(x)) ""))
        Some (String.concat "" b)
    with  _ -> None
它返回
some”“
,因为空列表不会导致异常。您需要在空列表中进行匹配,并且不返回任何值。我也不确定
List.map
是否与您在这里尝试执行的concat一致,也许您的意思是
List.reduce
? 像这样的东西可能有用

let cat filenames = 
   match filenames with
   | [] -> None
   | l -> l |> List.reduce (+) |> Some
它返回
some”“
,因为空列表不会导致异常。您需要在空列表中进行匹配,并且不返回任何值。我也不确定
List.map
是否与您在这里尝试执行的concat一致,也许您的意思是
List.reduce
? 像这样的东西可能有用

let cat filenames = 
   match filenames with
   | [] -> None
   | l -> l |> List.reduce (+) |> Some

你能添加更多的上下文吗?当出现问题时,您编写的代码似乎返回
None
,但不清楚哪里会出错。
concat
的定义是什么?module readNWrite let-concat(文件名:string):string option=try let a=System.IO.File.ReadAllText filename-Some a with->None-let-cat(文件名:string list):string option=try let b=filenames |>list.map(fun x->(defaultArg(concat(x))“”)Some(String.concat“b)使用->Noneconcat可以从以前的代码中定义您是否可以添加更多上下文?当出现问题时,您编写的代码似乎返回
None
,但不清楚哪里可能出错。
concat
的定义是什么?模块readNWrite let-concat(文件名:String):string option=try let a=System.IO.File.ReadAllText filename有些a带有->None let cat(文件名:string list):string option=try let b=filenames |>list.map(fun x->(defaultArg(concat(x))))有些带有->nonecocat的(string.concat“b)是根据前面的代码定义的