Tôi mới bắt đầu học Haskell, nhưng sự vắng mặt của vòng lặp vô cùng bực bội ngay bây giờ. Tôi đã tìm ra cách viết các vòng lặp cho các hàm. Tuy nhiên, vấn đề của tôi là tôi muốn xuất ra một số kết quả trong khi lặp lại vòng lặp. Dường như tôi phải sử dụng gỡ lỗi để thực hiện tác vụ đơn giản này.vòng lặp Haskell đơn giản
Vì vậy, ngay bây giờ tôi sẽ chỉ đánh giá cao một ví dụ về cách in ra một chuỗi 10 lần trong cấu trúc chính.
Nói cách khác, tôi muốn làm điều này 10 lần:
main = do
putStrLn "a string"
Cảm ơn. Tôi cảm thấy điều này sẽ rất chiếu sáng cho công việc của tôi.
Câu hỏi thực sự cần được trả lời ở đây là khi bạn muốn thực hiện "vòng" bằng ngôn ngữ chức năng, bạn sử dụng đệ quy. Điều pesky duy nhất là nếu bạn nhìn vào nó: các loại không xếp hàng, bởi vì constructor monad (IO, trong trường hợp này). Bởi vì điều đó, bạn cần một cấu trúc đệ quy mà "ghép nối" các monadic ràng buộc tất cả các con đường xuống. Nói cách khác, đây chỉ là đệ quy, với một biến thể nhỏ để xử lý cách "đặc biệt" Haskell đối xử với IO. –
Ngay cả tôi là người mới bắt đầu với Haskell nhưng tôi muốn chia sẻ những gì mà tôi đã đạt được. Có người nói với tôi rằng khi bạn muốn thực hiện các vòng lặp trong Haskell, hãy nghĩ đến việc đệ quy hoặc hiểu danh sách. Không liên quan đến câu hỏi của bạn ở đây, nhưng giả sử bạn muốn thêm tất cả các phần tử vào danh sách. Tất nhiên bạn cần phải lặp qua tất cả các yếu tố. Đệ quy sẽ hoạt động, và do đó sẽ sử dụng một danh sách hiểu. –