Đọc "Suy nghĩ về chức năng với Haskell" Tôi bắt gặp một phần của tính toán chương trình yêu cầu map sum (map (x:) xss)
được viết lại như map (x+) (map sum xss)
Haskell - Cách chuyển đổi bản đồ tổng (bản đồ (x :) xss) thành bản đồ (x +) (bản đồ tổng xss)
trực giác tôi biết rằng nó có ý nghĩa ...
nếu bạn có một số danh sách mà bạn đang đi để tổng hợp nhưng, trước khi tổng hợp, với những danh sách cùng bạn cũng sẽ thêm một yếu tố 'x ', thì điều đó cũng giống như lấy danh sách tổng các danh sách gốc và thêm giá trị của x vào mỗi danh sách.
Nhưng tôi muốn biết làm thế nào để biến đổi một thành khác chỉ bằng cách sử dụng lý luận equational. Tôi cảm thấy như tôi đang thiếu luật hoặc quy tắc sẽ giúp tôi hiểu.
Tôi không đồng ý về việc hiểu danh sách, nhưng chắc chắn là vấn đề về hương vị. Tại sao không chỉ sử dụng định nghĩa '(.)' Và nói 'map (sum. (X :)) xss = map (\ xs -> sum (x: xs)) xss = map (\ xs -> x + sum xs) = ... '? – kosmikus
@kosmikus Eh, sở thích cá nhân. Trong trường hợp này nó khá là không quan trọng, nhưng tôi có thể thấy lập luận để giữ 'bản đồ' trong đó toàn bộ thời gian. – bheklilr
@kosmikus trông đẹp hơn? – bheklilr