通用TryValue类型的语法是什么,它可以返回值'a或'b'的错误?
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))
Gus.. 5
您缺少左侧的通用参数:
type TryValue<'a,'b> = | Value of 'a | Error of 'b
当它只有一个参数时,您可以像使用字符串一样使用ML样式,但如果您有多个参数,则应使用带有<
>
尖括号的.NET表示法.
您缺少左侧的通用参数:
type TryValue<'a,'b> = | Value of 'a | Error of 'b
当它只有一个参数时,您可以像使用字符串一样使用ML样式,但如果您有多个参数,则应使用带有<
>
尖括号的.NET表示法.