2013-03-12 21 views
6

tôi có thể rút ra một danh sách các từ như:Chúng ta có thể nghĩ đến những danh sách bất biến như một cây kép?

this -> is -> a -> test 

và sau đó thông qua việc chia sẻ, tôi có thể rút ra hai danh sách như:

this -> is -> a -> test 
        ^
        | 
that -> was -> a -> hard 

Bây giờ, nếu tôi đảo ngược các mũi tên, tôi nhận được một cái cây, với thử nghiệm là gốc. Đây là khái niệm giống như tính hai mặt trong lý thuyết đồ thị/thể loại. Do đó, tôi có thể nghĩ về cây cối và danh sách như những khái niệm kép.

Điều này có chính xác/hữu ích không?

+1

Tôi nghĩ là không, vì loại chia sẻ đó không tự động. –

+0

@DanielLyons có nghĩa là đôi sẽ là một khu rừng? – didierc

+0

@didierc Tôi nghĩ điều đó có nghĩa là câu hỏi không thực sự áp dụng. –

Trả lời

18

Chia sẻ và lười biếng cho phép bạn có các cấu trúc tuần hoàn tùy ý. Ví dụ: trong Haskell định nghĩa

ones = 1 : ones 

tạo biểu đồ bao gồm một đỉnh đơn (tương ứng với 1) và vòng lặp (theo lý thuyết đồ thị, không có ý nghĩa lập trình). Bằng cách đảo ngược các mũi tên, bạn sẽ có được cấu trúc tương tự, và nó không phải là một cái cây (vì nó có các vòng lặp).

Vì vậy, điều đó không đúng trong ngôn ngữ lười biếng.

+4

Thật vậy. Nó được gọi là "giảm đồ thị" vì một lý do. –