Xin chào Haskellers và Haskellettes,Haskell - lồng danh sách rỗng
khi đọc http://learnyouahaskell.com/ một người bạn của tôi đã đưa ra một vấn đề:
Có thể trong Haskell để viết một hàm đệ quy cung cấp cho True nếu tất cả các tiểu -sub -_- sublists rỗng. Đoán đầu tiên của tôi là - nên - nhưng tôi có một vấn đề lớn chỉ cần viết chú thích kiểu.
ông đã cố gắng một cái gì đó giống như
nullRec l = if null l
then True
else if [] `elem` l
then nullRec (head [l]) && nullRec (tail l)
else False
đó là - không hoạt động - :-)
tôi đã đưa ra một cái gì đó giống như
- gấp với concat - để có được aa danh sách dài đơn
(khiến tôi gặp sự cố khi triển khai) - hoặc tạo một kiểu dữ liệu treelike vô hạn - và thực hiện việc này từ danh sách
(chưa triển khai)
nhưng âm thanh sau này hơi giống như quá mức cho vấn đề này. ý tưởng của bạn là gì - trên một chủ nhật đầy nắng như thế này ;-)
Cảm ơn trước
như một phản ứng đối với tất cả các ý kiến - phong cách xấu là này tôi muốn thêm này chỉ cần thử nghiệm!
KHÔNG thử ở nhà! ;-)
Hãy nghĩ về loại chức năng như vậy (nếu bạn thực hiện nó trên danh sách bình thường)! – yatima2975
tôi đã nghĩ về nó - nó phải là loại vô hạn [[… [a]…]] nhưng điều đó không thể viết ra trong haskell - đó là lý do tại sao tôi nghĩ ra cách tiếp cận thứ hai. Nhưng có cách nào dễ hơn để làm điều này không. Ngoài ra bộ não của tôi hơi chậm một chút khi tôi bị bệnh ngày hôm nay. – epsilonhalbe
Bệnh hay không, bạn đang đi đúng hướng! Thật dễ dàng để viết một họ các hàm 'nullRec2 :: [[a]] -> Bool',' nullRec3 :: [[[a]]] -> Bool' và vân vân (thử một cặp!), Nhưng bạn không thể khiến chúng phù hợp với một chữ ký kiểu đơn dễ dàng. Bạn cần loại cây như dữ liệu Tree a = Branch [Tree a] | Node a' hoặc có thể có một cái gì đó có thể với typeclasses (chưa nghĩ nhiều về cách tiếp cận này). – yatima2975