Das haskell-src-exts-Paket enthält Funktionen für den hübschen Druck eines Haskell AST. Was ich tun möchte, ist sein Verhalten bei bestimmten Konstruktoren zu ändern, in meinem Fall die Art, wie SCC-Pragmas gedruckt werden. Alles andere sollte also standardmäßig gedruckt werden, nur SCCs werden anders behandelt. Ist es möglich, es zu tun, ohne die source file zu kopieren und zu bearbeiten, was mache ich jetzt?Ändern des hübschen Druckers von haskell-src-exts
5
A
Antwort
2
Nun, die Bibliothek hat eine Sache richtig gemacht, mit einer Klasse für Pretty. Die Herausforderung besteht dann darin, eine andere Instanz für die Konstruktoren auszuwählen, die Sie anders drucken möchten. Im Idealfall würden Sie einfach den AST-Knoten neu eingeben, der Ihnen wichtig ist, und ihn irgendwie in den AST ersetzen.
Jetzt ist das Problem hier, dass der Haskell AST, der durch die Bibliothek exportiert wird, seine Typenstruktur örtlich festgelegt hat. Es tut nicht, z.B. Verwenden Sie two-level types, wodurch Sie neue Typen für Teile der Struktur ersetzen können. Daher müssten Sie den Typ der AST bis zu dem Knoten neu definieren, für den Sie den Typ ändern möchten.
Verwandte Themen
- 1. Registrieren eines hübschen Druckers in GDB
- 2. Ändern der Standardpapiergröße des Druckers
- 3. Anatomie des hübschen Drucktupels
- 4. Einstellung des Druckers „KeepPrintedDocuments“ Eigenschaft in .NET
- 5. So erhalten Sie die DPI des Druckers in WPF
- 6. WPF-Druck - Automatisches Festlegen des Druckers auf WPF PrintDialog
- 7. Paket zum Anzeigen von "hübschen" Monolog-Dateien
- 8. ASCII-Bibliothek zum Erstellen von "hübschen" Verzeichnisbäumen?
- 9. Vorgehensweise: Simulieren eines (IPP) Druckers
- 10. So ermitteln Sie den Speicherort eines Druckers
- 11. Batch Script zum Abfragen des Netzwerknamens des Druckers und zum Wechseln zu einem anderen Server
- 12. Konfigurieren eines POS-Druckers mit POS.NET
- 13. Suchen Sie die Standard-Duplexoption eines Druckers
- 14. Ändern des UserAgents von NSURLConnection
- 15. Ändern des Namens von Viewstate
- 16. Ändern des Standardkalenders von CultureAndRegionInfoBuilder
- 17. Ändern des Verhaltens von Markenabsatzparametern
- 18. Ändern des Schemas von System.Uri
- 19. Ändern des Aussehens von Textfeldern
- 20. Ändern des Layouts von STPPaymentCardTextField
- 21. Ändern des Inhalts von EnumDropDownListFor
- 22. Wie schreibe ich einen benutzerdefinierten hübschen Drucker
- 23. Wordpress benutzerdefinierte Paginierung mit hübschen URL
- 24. Yii2: Pfad Problem beim Umleiten mit hübschen URL von Login
- 25. Ändern des Standardverhaltens des Operators
- 26. Ändern des Werts des Kartenpaars
- 27. Etikett des UISwitch ändern
- 28. Arbeitsverzeichnis des Testlaufkäfigs ändern
- 29. Ändern des Standardtitels von confirm() in JavaScript?
- 30. OSX: Ändern des Pfades von .framework
Wie könnte diese Technik verwendet werden, um einen Knoten im AST zu ersetzen? Nehmen wir an, ich möchte (in den Definitionen aus dem zitierten Papier) "Arith" in "Term" mit einem benutzerdefinierten Typ "MyArith" ersetzen. Ist 'Term' nicht festgelegt mit seiner Definition,' Arith' zu verwenden? –