Tôi đọc một hướng dẫn sử dụng ví dụ sau (mà tôi sẽ khái quát phần nào):Khi phá hủy bộ dữ liệu trong Haskell, các yếu tố có thể được sử dụng ở đâu?
f :: Foo -> (Int, Foo)
...
fList :: Foo -> [Int]
fList foo = x : fList bar
where
(x, bar) = f foo
Câu hỏi của tôi nằm trong thực tế rằng có vẻ như bạn có thể tham khảo x
và bar
, theo tên, ngoài tuple nơi họ thu được. Điều này có vẻ hoạt động như danh sách tham số phá hoại bằng các ngôn ngữ khác, nếu tôi đoán là đúng. (Nói cách khác, tôi không phải làm như sau :)
fList foo = (fst tuple) : fList (snd tuple)
where
tuple = f foo
Tôi có đúng về hành vi này không? Tôi chưa bao giờ thấy nó được đề cập trong các hướng dẫn/sách tôi đã đọc. Ai đó có thể chỉ cho tôi biết thêm thông tin về chủ đề này không?
Chỉnh sửa: Bất kỳ điều gì (danh sách, mảng, v.v ...) có bị phá hoại theo cách tương tự hay bạn chỉ có thể làm điều này với bộ dữ liệu?
Nếu cuối cùng bạn không giải thích được sự khớp mẫu trong hướng dẫn đó, bạn có thể muốn bổ sung nó với lời giải thích đầy đủ hơn về Haskell. So khớp mẫu là cơ bản và quan trọng đối với ngôn ngữ. –