F# 中 'validation' 的奇怪类型推断问题
odd type inference issue with 'validation', in F#
使用库 'FsToolkit.ErrorHandling'
和以下代码:
let f x =
if x % 2 = 0 then Ok $"even {x}" else Error $"odd {x}"
let xx =
validation {
let! a = f 1
and! b = f 2
and! c = f 3
return $"{a} {b} {c}"
}
printfn $"{xx.GetType()}"
输出是一个
Result<string, string list>
或者,更具体地说:
Microsoft.FSharp.Core.FSharpResult2[System.String,Microsoft.FSharp.Collections.FSharpList
1[System.String]]
但是IDE(骑手)有不同的看法:
出于某种原因,这是预期的行为吗?或者它可能是一个错误?
Validation<'a, 'err>
是 Result<'a, 'err list>
的类型别名:
这不会创建新类型,但会创建一种引用现有类型的新方法,这意味着它们可以互换使用。
使用库 'FsToolkit.ErrorHandling'
和以下代码:
let f x =
if x % 2 = 0 then Ok $"even {x}" else Error $"odd {x}"
let xx =
validation {
let! a = f 1
and! b = f 2
and! c = f 3
return $"{a} {b} {c}"
}
printfn $"{xx.GetType()}"
输出是一个
Result<string, string list>
或者,更具体地说:
Microsoft.FSharp.Core.FSharpResult
2[System.String,Microsoft.FSharp.Collections.FSharpList
1[System.String]]
但是IDE(骑手)有不同的看法:
出于某种原因,这是预期的行为吗?或者它可能是一个错误?
Validation<'a, 'err>
是 Result<'a, 'err list>
的类型别名:
这不会创建新类型,但会创建一种引用现有类型的新方法,这意味着它们可以互换使用。