Tôi bắt đầu với Netwire phiên bản 5.Bắt đầu vào cho chương trình Netwire
Tôi không có vấn đề bằng văn bản tất cả các dây tôi muốn chuyển đổi đầu vào của tôi vào kết quả đầu ra của tôi.
Bây giờ đã đến lúc để viết wrapper IO để buộc ở đầu vào thực tế của tôi, và tôi là một chút bối rối.
Tôi có phải tạo loại phiên tùy chỉnh cho thông số s
của Wire s e m a b
và nhúng giá trị cảm biến vào đó không?
Nếu vậy, tôi có những câu hỏi này:
- chuyện gì với các
Monoid s
bối cảnhclass (Monoid s, Real t) => HasTime t s | s -> t
? Cái này được dùng để làm gì? - Tôi đã nghĩ đến việc tacking trên
Map String Double
với cảm biến của tôi, nhưng làm thế nào monoid của tôi nên thắt chặt từ điển? Nó có nên thiên vị không? Phải thiên vị? Không có điều nào ở trên?
Nếu không, những gì tôi phải làm gì? Tôi muốn kết thúc bằng các dây có dạng Wire s InhibitionReason Identity() Double
cho một số s
, thể hiện ý kiến của tôi. Đó là sự hiểu biết của tôi rằng tôi không muốn hoặc cần phải sử dụng thông số m
monadic đơn lẻ của Wire
cho mục đích này, cho phép các dây tự tinh khiết và giới hạn IO với mã đi qua dây cấp cao nhất (S). Điều này có đúng không?
Có một trường hợp monoid cho Bản đồ những gì còn lại thiên vị. Và tôi thực sự nghĩ rằng làm cho bối cảnh đơn thuần ở đây một độc giả đọc và nhồi thông tin cảm biến của bạn trong đó sẽ là hợp lý ở đây. Điều này không thực sự ảnh hưởng đến nơi bạn bước dây của bạn bởi vì bạn có thể chỉ 'runReader' (hoặc' runReaderT' nếu bạn muốn công cụ trong nhiều thứ hơn). – Cubic
Hướng dẫn/ví dụ ngoài đề xuất sử dụng các tác vụ IO trong dây bên trong để nhận dữ liệu cảm biến. ví dụ. sử dụng 'mkGen_' với' getKey' trong đó. Tôi sẽ quan tâm đến việc khái quát hóa câu hỏi: "Ưu điểm và nhược điểm của việc cho phép các hành động IO bên trong dây, so với việc cho ăn tất cả dữ liệu IO làm đầu vào cho dây ngoài cùng là gì?" – crosser