Chương 3 định nghĩa kiểu đệ quy sau đây để đại diện cho một cây nhị phân:Real World Haskell Chương 3 excercise: Cây nhị phân với 1 giá trị constructor
data Tree a = Node a (Tree a) (Tree a)
| Empty
deriving (Show)
Cuộc diễn tập đòi hỏi tôi thực hiện cùng loại sử dụng một constructor giá trị duy nhất, bằng cách sử dụng "Maybe" loại để đề cập đến các nút con:
(Từ Chương 3 Bài tập 2 trên trang 60)
"Xác định một loại cây mà chỉ có một nhà xây dựng, như ví dụ Java của chúng tôi Thay vì Empty. constructor, sử dụng kiểu Có thể để refe r cho trẻ em của một nút. "
Các giải pháp tôi đã đưa ra như sau:
data AltTree a = AltNode a (Maybe (AltTree a)) (Maybe (AltTree a))
deriving (Show)
Tuy nhiên, điều này không cho phép một cây có chứa cây rỗng khác, chẳng hạn như:
AltNode 1 (AltNode 2 Nothing Nothing) (AltNode 3 Nothing Nothing)
Và tôi không chắc chắn tại sao, là "Không có gì" không phải là một hàm tạo giá trị cho kiểu "Có thể"?
Online: [RWH> Chương 3> Các bài tập] (http://book.realworldhaskell.org/read/defining-types-streamlining-functions.html#id585938) –