Một số hàm bậc cao hơn để vận hành trên danh sách hoặc mảng đã được lặp đi lặp lại hoặc được phát minh lại. Các bản đồ chức năng , gấp [ l | r ] và bộ lọc được tìm thấy cùng nhau trong một số ngôn ngữ lập trình, như Scheme, ML và Python, dường như không có tổ tiên chung. Tôi sẽ dùng ba tên này để tập trung vào câu hỏi.
Để chỉ ra rằng các tên không phổ biến, đây là một mẫu các tên cho chức năng tương đương trong các ngôn ngữ khác. C ++ đã biến đổi thay vì ánh xạ và remove_if thay vì bộ lọc (đảo ngược ý nghĩa của vị từ). Lisp có mapcar thay vì bản đồ , remove-if-không thay bộ lọc , và giảm thay vì lần (Một số Lisp hiện đại biến thể có bản đồ nhưng xuất hiện này là một hình thức có nguồn gốc .) C # sử dụng Chọn thay đồ và ở đâu thay vìbộ lọc . Tên của C # đến từ SQL thông qua LINQ và mặc dù tên thay đổi, chức năng của chúng bị ảnh hưởng bởi Haskell, chính nó bị ảnh hưởng bởi ML.
Bản đồ tên , nếp gấp và bộ lọc là phổ biến, nhưng không phổ biến. Điều này cho thấy rằng họ đã được mượn từ một nguồn có ảnh hưởng sang các ngôn ngữ đương đại khác. Những tên hàm này đến từ đâu?
mapcar
là một bản đồ, trên xe (chứ không phải là cdr).
filter
thực hiện chính xác điều đó - nó lọc dữ liệu. Có vẻ khá rõ ràng.
map
sẽ đến từ lý thuyết tập hợp toán học, mô tả các phép biến đổi tập hợp là "ánh xạ" từ miền đầu vào sang phạm vi đầu ra.