Zum Beispiel mit Listen, wenn ich eine Regel mit der LHS von myFn [x]
schreibe, wird es auch in der Lage sein zu feuern, wenn der Programmierer schreibt myFn (x:[])
? Oder muss ich eine separate Regel für jede mögliche Syntax schreiben?Wissen die GHC-Umschreibungsregeln syntaktischen Zucker?
6
A
Antwort
7
Re-Write-Regeln werden entzuckert. So eine erneute Schreibregel wie
{-# RULES
"myFn/singleton" forall x. myFn [x] = myOtherFn x
#-}
wird intern als
forall x. myFn (x:[]) = myOtherFn x
gespeichert werden Es wird dann auf die de-gezuckerte Form des Programms angewendet. (Alle Optimierung in GHC erfolgt auf der entzuckerten Form des Programms).
4
Mein Verständnis ist, dass rein syntaktische Dinge wie diese keine Rolle spielen; Die Regel wird in beide Richtungen ausgelöst.
Was Sie wird finden ein Problem zu sein, ist, dass myFn
könnte durch die Zeit inlined wurden GHC versucht, die Regel zu verwenden (so wird es nichts für sie sein Feuer auf). Im Allgemeinen ist es schwierig, genau herauszufinden, wann man seine Regel (en) aktivieren soll!
Verwandte Themen
- 1. int.TryParse syntaktischen Zucker
- 2. Automatisch erweitern C# 3 syntaktischen Zucker
- 3. Wie mache ich meinen eigenen syntaktischen Zucker in Swift?
- 4. Gibt es syntaktischen Zucker für die Bindung eines Wertes innerhalb einer anonymen Funktion in Scala?
- 5. Scala Map: geheimnisvoller syntaktischer Zucker?
- 6. Syntactic Zucker vs Feature
- 7. wie man const function javascript (syntaktischer Zucker) definiert?
- 8. Init-Array mit syntaktischem Zucker, welche Init-Methode heißt?
- 9. Folgen die Attribute des sqoop-Befehls einer syntaktischen Reihenfolge?
- 10. API-Aufruf an Zucker crm
- 11. Objekte, die voneinander wissen
- 12. Scala syntaktischer Zucker für die Umwandlung zu `Option`
- 13. Scala's For-Comprehensions: Vitalfunktion oder syntaktischer Zucker?
- 14. ist begin..end in OCaml syntaktischer Zucker?
- 15. Zucker ORM löst NoSuchTable Ausnahme auf Lollipop
- 16. Rubin syntaktischer Zucker: Umgang mit nils
- 17. QT Eigenschaften - syntaktischer Zucker oder Entwicklungstools
- 18. Zucker ORM für Android kann meine Spaltennamen
- 19. Sugar Abfrage entspricht Methode in Zucker CRM
- 20. Auto-Inkrement-Primärschlüssel in Zucker orm
- 21. Wissen, wenn die Netzwerkverbindung zurückkehrt
- 22. Kürzel für for-Schleife - syntaktischer Zucker in C++ (11)
- 23. Führt die folgende Deklaration der Variablen zu einem lexikalischen oder syntaktischen Fehler?
- 24. Wie Beziehung zwischen zwei Entitäten machen - Zucker ORM
- 25. Wie kann man wissen, wer die Nachricht
- 26. Wie wpf wissen die Eigenschaft Content
- 27. Ich möchte die Verwendung von Dateipfad wissen
- 28. Wissen, an welcher Stelle die Anwendung einfriert
- 29. die Logik Um zu wissen, dahinter
- 30. CodeIgniter, die Steuerung wissen, welche Funktion aufgerufen
Wir alle wissen, dass die Listenkonstruktion wie '[a, b, c]' nur Zucker für 'a: b: c: []' ist, also sind diese beiden Ausdrücke äquivalent, aber die zweite Form ist besser für Muster passend. – AJFarmar
Syntactic Zucker spielt keine Rolle für Rewrite-Regeln. – augustss