gpt4 book ai didi

.net - 为什么签名会是 ... -> Result

转载 作者:行者123 更新时间:2023-12-02 06:48:20 25 4
gpt4 key购买 nike

我正在关注 Scott 的 talk ,他举的例子之一是:

type Result<'a> = 
| Success of 'a
| Failure of string
let pchar (charToMatch, input) =
if System.String.IsNullOrEmpty (input) then
Failure "no input!"
else
let first = input.[0]
if first = charToMatch then
let remaining = input.[1..]
Success (charToMatch, remaining)
else
let msg = sprintf "exepecting '%c' got '%c'" charToMatch first
Failure msg

Visual Studio Code 显示 pchar 的签名函数是:

char*string->Result<char*string> :

vscode screenshot

返回类型应该只是 Result<'a> ?

最佳答案

Result<'a>是一个 generic 类型,它有 'a作为类型参数。当你写 Success (charToMatch, remaining)编译器将此泛型类型参数推断为 char 的元组和 string : Result<char*string> .你可以写Success ()你会得到一个 Result<unit>类型。

同样在 F# 中,当您像 (charToMatch, input) 那样用逗号在括号中列出函数的参数时,这意味着你的函数需要一个元组,这意味着你不能使用 currying .为了使柯里化(Currying)可用,您应该这样定义函数: let pchar charToMatch input = ...

关于.net - 为什么签名会是 ... -> Result<char*string>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51586290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com