通用TryValue类型的语法是什么,它可以返回值'a或错误'b?f#歧义联合通用
type TryValue =
| Value of 'a
| Error of 'b
如果错误是一个字符串,那么它的罚款:
type 'a TryValue =
| Value of 'a
| Error of string
我想定义一个tryRun函数,它接受一个错误的创造者,一个功能和参数,将尝试运行的功能用参数和在任何错误使用错误创建者函数创建了一个错误:
let tryRun createErrorFn param fn =
try
Value (fn param)
with
| ex -> Error (createErrorFn ex.Message param)
而对于任何功能的包装,以由tryRun包裹:
let wrapTryRun createErrorFn fn param =
match param with
| Value a -> tryRun createErrorFn a fn
| Error e -> Error e
现在我可以运行的功能列表(伪代码,还没有完全制定了这一点):
let createErrorFn errorMessage param =
URLProcessignError {url=param.url;errorMessage=errorMessage}
[fn1;fn2] |> List.fold (fun acc fn -> (wrapTryRun createErrorFn fn acc))
看起来像有结果类型在[F#4.1](https://blogs.msdn.microsoft.com/dotnet/2016/07/25/a-peek-into-f-4-1/) – s952163