Tôi đang triển khai thuật toán điểm-điểm-đa giác của javascript theo kiểu thuần túy chức năng (không có lý do cụ thể nào đằng sau nó).Có thể triển khai phiên bản js của giải nén Haskell theo cách hoàn toàn chức năng không?
Tôi gặp khó khăn khi cần thiết để lấy hai mảng từ mảng 2 chiều (sao chép danh sách các bộ dữ liệu); một cái gì đó giống như của Haskell unzip
.
Có thể, bắt đầu từ một cái gì đó như [[a,b],[c,d],[e,f]]
để có được [[a,c,e],[b,d,f]]
mà không sử dụng trình vòng lặp theo thủ tục kiểu?
(Tôi biết đó là một câu hỏi tầm thường, và tôi chỉ có thể thực hiện các chức năng procedurally và sau đó quên nó đi, nhưng tôi đã tò mò muốn biết nếu có một giải pháp)
EDIT: Để làm rõ, Tôi biết làm thế nào để thực hiện zip
và unzip
: Tôi đã tự hỏi rằng nó có thể có thể thực hiện chúng mà không có các vòng lặp for
và phân bổ lại biến.
Với sự khác biệt giữa biểu diễn của JavaScript và Haskell của danh sách, chúng không thể được triển khai theo cùng một cách. Haskell thực hiện các danh sách như là một cấu trúc bất biến được liên kết đơn lẻ. Java thực hiện các danh sách dưới dạng một mảng có thể thay đổi. Đối với trước đây, bạn sử dụng đệ quy và khớp mẫu. Đối với thứ hai, bạn sử dụng cho các vòng lặp và các chỉ mục. –
Hm, tôi biết Js không có danh sách. Tôi đã đề cập đến một chức năng cụ thể, trong một miền bị hạn chế - tôi không cần nó để làm việc trên "mảng vô hạn" (lulz) hoặc như vậy. – cbrandolino