Tôi có một chút kinh nghiệm lạ với chức năng lọc F # hôm nay. Mã này là:Chức năng lọc F # - điều kiện của đối số đầu tiên dường như bị đảo ngược
let rec filter : ('a -> bool) -> 'a list -> 'a list =
fun isKept -> function
| [] -> []
| (x::xs) -> if isKept x then x::filter isKept xs
else filter isKept xs
let x = filter ((>) 1) [1; -5; -20; 30; -35; 40]
Đó là mã trả về
val x : int list = [-5; -20; -35]
Vấn đề là, như tôi đã vượt qua một điều kiện trong đối số đầu tiên (> 1), tôi hy vọng nó sẽ lọc ra bất kỳ yếu tố danh sách thứ hai đối số lớn hơn 1, không phải ngược lại.
Có điều gì rõ ràng là tôi không thể phát hiện được không?
đẹp, nhờ;) – user2431438
Lưu ý rằng sự bổ sung của '(>)' không phải là '(<)' nhưng '(<=)'. – Frank
@ Frank Bạn đúng - nhưng câu hỏi nêu rõ 'Tôi hy vọng nó sẽ lọc ra bất kỳ phần tử danh sách nào của đối số thứ hai lớn hơn [1]. Vì vậy, '(<)' là cần thiết để có được kết quả chính xác. –