我是使用函数式语言进行编程的新手。我正在尝试实现F#tryFindIndex函数。在F#中使用选项类型实现tryFindIndex
let rec tryFindIndex func list =
match list with
| [] -> None
| hd::tl -> if func hd then Some(0)
else (tryFindIndex func tl) + 1
的问题是与最后一行,因为加1引起的返回类型是不是“廉政选项”“诠释”。我需要递归跟踪索引。
实际上,你可以看一下F#源代码,找出它是如何为编译器实现的。 TryFindIndex在这里https://github.com/fsharp/fsharp/blob/master/src/fsharp/FSharp.Core/list.fs#L370 –
@John Palmer酷,谢谢! – airietis