TL; DR Bạn đã gần như chắc chắn gặp phải một lỗi. Điều đó nói rằng, map
và siêu kết nối »
có những khác biệt lớn.
map
trả về số Seq. Seq
này mang lại kết quả của việc áp dụng người dùng cung cấp mã để mỗi người trong số các yếu tố của một người dùng cung cấp cấu trúc dữ liệu:
- một mức độ sâu (traversal của cấu trúc dữ liệu là nông -
map
không đệ quy xuống để phụ cấu trúc của cấp cao nhất của cấu trúc dữ liệu)
- mỗi lần một (mọi thứ được thực hiện tuần tự, không có gì song song)
- lazily (
map
trả về ngay lập tức; mã người dùng được cung cấp được áp dụng cho kết quả sau này khi cần thiết để kéo các giá trị từ Seq
)
Các »
hyperop trả về toán hạng cấu trúc dữ liệu trên nó để lại sau khi đã áp dụng các hoạt động unary về quyền của mình để các yếu tố của cấu trúc dữ liệu:
- chỉ có một mức độ sâu hoặc giảm dần để leavesnhư được quyết định bởi hoạt động đơn nhất
- theo lô song song, ít nhất ngữ nghĩa (trách nhiệm của nhà lập trình là chọn một hoạt động đơn nhất sẽ mang lại kết quả chính xác khi áp dụng cho nhiều phần tử trong đoạn llel theo thứ tự tùy ý)
- háo hức (không giống như một cuộc gọi
map
, một hyperoperation chỉ trả lại khi các nhà điều hành unary đã được áp dụng cho toàn bộ cấu trúc dữ liệu)
Nếu bạn đang áp dụng một nhà điều hành unary đó là "nodal" (do đó quá trình tăng tốc sẽ chọn không hạ xuống) hoặc cấu trúc dữ liệu đang hoạt động chỉ sâu một cấp (do đó không có lá cấp thấp hơn để tăng tốc đi xuống) thì sự khác biệt giữa tăng tốc và map
với một toán tử đơn nhất chỉ là các khía cạnh tuần tự/song song và lười biếng/háo hức.
Có vẻ như khá rõ ràng đối với tôi rằng sum
phải là một toán tử nút nếu không nó sẽ đi vào các cấu trúc phụ cho đến khi nó đến từng lá và do đó sẽ được áp dụng cho một loạt các giá trị đơn lẻ. ETA: Có vẻ như nó đã được sửa.
tất cả những gì là đúng, nhưng lưu ý rằng hyperoperators không nhất thiết phải đi sâu vào substructures (cf 'nói ([1,2], [2, 2], [3, 3])». Elems'); được cho là, 'List.sum' chỉ thiếu một chú thích' là nodal' ... – Christoph