Tôi có một F # Chức năng:F # giá trị giới hạn trong danh sách trống
let removeEven (listToGoUnder : _ list) =
let rec listRec list x =
match list with
| [] -> []
| head::tail when (x%2 = 0) -> head :: listRec (tail) (x+1)
| head::tail -> listRec (tail) (x+1)
listRec listToGoUnder 0
Nó loại bỏ tất cả các yếu tố tại một chỉ số thậm chí trong một danh sách. Nó hoạt động nếu tôi cung cấp cho danh sách một số imput, như removeEven ['1';'2';'3']
tôi nhận được ['1';'3']
mà tôi có nghĩa vụ phải. Nhưng khi tôi chèn một danh sách trống làm thông số, tôi nhận được lỗi này:
stdin(78,1): error FS0030: Value restriction. The value 'it' has been inferred to have generic type
val it : '_a list Either define 'it' as a simple data term, make it a function with explicit arguments or, if you do not intend for it to be generic, add a type annotation.
Trợ giúp, bất kỳ ai?
Lưu ý rằng bạn cũng có thể thêm chú thích trực tiếp cho 'results' thay vào đó, có thể thành ngữ hơn. – kvb
Hàm removeOdd được đề xuất không thành công khi đối số là '[]'. Tôi đang cố giải quyết vấn đề này theo cách chung chung, nhưng tôi không thể quản lý để xử lý lỗi '[]' không có lỗi "FS0030: Giới hạn giá trị". Có thể thực hiện chức năng như vậy thật sự chung chung không? – TurboHz