Tôi đang viết biến áp luồng từ một số loại dữ liệu đầu vào thành kiểu dữ liệu đầu ra. Đầu vào được thực hiện bởi người dùng, do đó, có một số thời gian giữa các sự kiện. Bởi vì mỗi đầu vào yêu cầu tải tài nguyên, tôi muốn "xem xét tương lai", tức là gửi tất cả các yếu tố đầu vào có thể đến các tài nguyên tính toán và tải trước chính dựa trên kết quả.Có monads nào có thể được sử dụng như một automaton không?
Hiện tại, luôn có một đầu ra chính xác sau mỗi đầu vào nhưng cuối cùng nó có thể trở nên thú vị để thay đổi điều này.
Tôi đã thành công để triển khai điều đó với máy biến áp Automaton của Ross Paterson. Tôi không chắc giải pháp của tôi là tối ưu.
- Có ví dụ hay về cách thực hiện việc này không? Có lẽ ngay cả với mã thử nghiệm?
- Nó có thể đạt được với một đơn nguyên không? (Ví dụ ?, Giải thích lý do tại sao nó không thể?)
Chỉnh sửa: Sau khi gọi để biết thêm chi tiết, tôi đã thêm mã tại đây. Bây giờ tôi đang loại bỏ nó (nó không phải là dễ hiểu) và thêm một số lời giải thích khác. Câu hỏi của tôi được trả lời là thaugh.
Ý định của tôi là có vòng lặp sự kiện chính dừng sau mỗi lần nhập của người dùng đã được cấp cho máy biến áp mũi tên/luồng/bất kỳ thứ gì. Sau đó, nó sẽ lưu trữ trạng thái automaton hiện tại và gửi tất cả các đầu vào có thể (các sự kiện giả) từng cái một đến ô tô và xem tài nguyên nào phải được nạp, để lưu chúng. Sau sự kiện thực sự tiếp theo, nó sẽ sử dụng bộ nhớ cache để đáp ứng tốt hơn. Tính toán chính không nên bị ảnh hưởng bởi điều này.
không đủ điều kiện để trả lời, nhưng lặp lại có thể hữu ích cho bạn. Xem thư viện này: http://hackage.haskell.org/package/enumerator ... nhưng mũi tên sẽ có vẻ trừu tượng tốt. Tôi sẽ đặt cược thêm chi tiết cụ thể sẽ giúp mọi người trả lời. – jberryman
+1 về chi tiết cụ thể hơn. – sclv