F#函数g1的类型、调用方式及when子句含义咨询
F#函数g1的问题解答
1. 最通用类型
g1的类型为:('a -> bool) -> 'a list -> 'a list
'a是泛型参数,代表任意类型- 第一个参数是判断函数:接收
'a类型的值,返回布尔值 - 第二个参数是
'a类型的列表 - 返回值是筛选后的
'a类型列表
2. 计算功能
从输入列表中筛选出所有满足判断函数p条件的元素,按原列表顺序组成新列表返回。
3. when p x的含义
when是F#模式匹配的守卫条件,只有当p x返回true时,当前匹配分支才会触发。这里的p x就是用传入的判断函数p检查列表头元素x,符合条件就把x加入结果,再递归处理剩余列表元素。
4. 调用方式与报错原因
直接执行g1 [1;2;3]报错,是因为g1需要两个参数,你只传了列表,缺了判断函数。正确调用示例:
- 筛选列表中的偶数:
g1 (fun x -> x % 2 = 0) [1;2;3;4]→ 返回[2;4] - 筛选大于2的元素:
g1 (fun x -> x > 2) [1;2;3]→ 返回[3]
内容的提问来源于stack exchange,提问作者Ibo
相关产品推荐
相关产品推荐

