Ich fange mit Netwire Version 5 an.Eingabe in Netwire-Programme
Ich habe kein Problem, alle Drähte zu schreiben, die ich meine Eingänge in meine Ausgaben umwandeln möchte.
Jetzt ist es an der Zeit, den IO-Wrapper zu schreiben, um meine realen Eingaben zu verknüpfen, und ich bin ein wenig verwirrt.
Soll ich einen benutzerdefinierten Sitzungstyp für den s
Parameter von Wire s e m a b
erstellen und meine Sensorwerte dort einbetten?
Wenn ja, habe ich diese Fragen:
- Was mit dem
Monoid s
Kontextclass (Monoid s, Real t) => HasTime t s | s -> t
ist oben? Was wird es verwendet? - Ich dachte an einen
Map String Double
mit meinen Sensorablesungen, aber wie sollte mein Monoid die Wörterbücher knacken? Sollte es linksbündig sein? Rechts-voreingenommen? Nichts des oben Genannten?
Wenn nicht, was soll ich tun? Ich möchte enden mit Drähten der Form Wire s InhibitionReason Identity() Double
für einige s
, die meine Eingabe darstellen.
Es ist mein Verständnis, dass ich nicht den monadischen m
Parameter von Wire
für diesen Zweck verwenden möchte und muss, die Drähte selbst rein sein und die IO auf den Code beschränken, der durch die oberste Ebene geht (s). Ist das falsch?
Es gibt ein Monoid Beispiel für Map, die übrig geblieben sind voreingenommen. Und ich würde tatsächlich denken, den monadischen Kontext hier zu einer Leser-Monade zu machen und die Sensorinformationen dort hinein zu packen, wäre hier vernünftig. Dies beeinflusst nicht wirklich den Ort, an dem du deine Drähte steckst, weil du einfach "runReader" (oder "runReaderT", wenn du noch mehr Sachen stopfen willst). – Cubic
Tutorials/Beispiele da draußen schlagen vor, IO-Aktionen in inneren Drähten zu verwenden, um Sensordaten zu erhalten. z.B. benutze 'mkGen_' mit' getKey' darin. Ich wäre daran interessiert, die Frage zu verallgemeinern: "Was sind die Vor- und Nachteile von IO-Aktionen innerhalb von Drähten, verglichen mit der Einspeisung aller IO-Daten als Eingang für die äußerste Leitung?" – crosser