Nehmen wir an, ich möchte einen Thread innerhalb eines do
-Notationsblocks abzweigen, aber die Thread-ID interessiert mich nicht. Wenn ichVerwendet Musternamen, die mit "_" (Unterstrich) beginnen, für ignorierte Ergebnisse, die dokumentiert/empfohlen/portabel sind?
forkIO action
GHC Fragen schreiben
Warnung Warnung: Eine
do
-Notation Anweisung verworfen ein Ergebnis vom TypThreadId
. Unterdrückt diese Warnung sagen_ <- forkOS action
Dies ist eine gute Idee, wie ich, dass das Programm zeigen, wollen einige Ergebnis wird verworfen. Auf diese Weise wird jedoch nicht ersichtlich, was verworfen wird. Ich konnte
threadId <- forkIO action
schreiben, aber dann sind wir verstecken die Tatsache, dass wir threadId
nicht überall verwenden und GHC warnt richtig
Warnung: Definierte aber nicht verwendet:
threadId
Es scheint, dass der vorangestellte Unterstrich beide Probleme löst:
Meine Fragen sind: Verwendet die Verwendung von Variablen, die mit Unterstrichen beginnen, laut Haskells Sprachspezifikation? Wie tragbar ist es? Ist es irgendwo dokumentiert? Ist es für Fälle wie diesen ermutigt - zu dokumentieren, dass ein Ergebnis ignoriert wird?
Es ist legal, es ist tragbar. Und ich ermutige es. :) – augustss
Mehrere Platzhalter-IDs für Klarheit zu haben ist meiner Meinung nach eine gute Idee, aber wenn sie nicht vor "Definiert, aber nicht benutzt" warnen, sollten sie nicht * erlaubt * sein! –
@TomEllis Bezeichner wie '_thisOne' dürfen verwendet werden. Sie dürfen auch ignoriert werden. –