nushell / nushell/nushell.github.io

Are Boolean operators lazy?

Offen
#2,072 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
TypeScript
Sterne
258
Forks
561
Ø Merge
3 Std. 20 Min.
Gemergte PRs (30 T.)
15

Beschreibung

Hello,

TL;DR: Are the and and or Boolean operators guaranteed to be lazy, so we can document it?


I encountered this bug https://github.com/nushell/nushell/issues/10237 which makes last error out on an empty input instead of returning a null if I understand correctly.

So I have written this workaround:

  let filler = if ($text != "") and ($text | split chars | last) == "%" { "%" } else { " " }

This code works without errors for me, so the RHS of the and Boolean operator must not be evaluated / be lazily evaluated.
To put it short, the and operator seems lazy (nu version 0.108.0)

I cannot find it documented in Boolean | Nushell and looking for "lazy" in the documentation does not yield anything related to Booleans.

Is and guaranteed to be lazy in future versions? What about or?
Should we document this behavior?

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit der verlinkten Boolean-Dokumentationsseite und dem referenzierten Nushell-Issue 10237. Überprüfe, ob garantiert ist, dass and und or verzögert ausgewertet werden, und dokumentiere anschließend das bestätigte Verhalten sowie seine Auswirkungen auf das gezeigte Beispiel auf der entsprechenden Boolean-Dokumentationsseite.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
shell
Bereich
documentation
Issue-Typ
Dokumentation
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.