我正在尝试学习F#中函数式编程的一些思路,所以任何提示都会受到赞赏.现在我正在制作一个简单的递归函数,它接受一个列表并返回第i个元素.
let rec nth(list, i) =
match (list, i) with
| (x::xs, 0) -> x
| (x::xs, i) -> nth(xs, i-1)
Run Code Online (Sandbox Code Playgroud)
函数本身似乎有效,但它警告我一个不完整的模式.在这种情况下,当我匹配空列表时,我不确定要返回什么,因为如果我例如执行以下操作:
| ([], _) -> ()
Run Code Online (Sandbox Code Playgroud)
整个函数被视为一个以单位为参数的函数.我希望它被视为多态函数.
虽然我在这里,但我还可以问一下,在认真开发时设计一个函数时,检查有效参数是多么合理.我应该检查所有内容,以防止"滥用"该功能吗?在上面的例子中,我可以例如指定试图访问列表中大于其大小的元素的函数.我希望我的问题不要太混乱:)