Ad esempio con gli elenchi, se si scrive una regola con LHS di myFn [x]
, sarà possibile attivare anche quando il programmatore scrive myFn (x:[])
? o dovrò scrivere una regola separata per ogni possibile sintassi?Le regole di riscrittura GHC sanno riconoscere lo zucchero sintattico?
6
A
risposta
7
Le regole di riscrittura vengono ridotte di zucchero. Quindi una regola di riscrittura come
{-# RULES
"myFn/singleton" forall x. myFn [x] = myOtherFn x
#-}
verrà memorizzato internamente come
forall x. myFn (x:[]) = myOtherFn x
E 'poi applicato alla forma de-zuccherata del programma. (Tutte le ottimizzazioni in GHC si verificano nella forma desertificata del programma).
4
La mia comprensione è che le cose puramente sintattiche come questa non contano; la regola sparerà in entrambi i modi.
Quello che sarà trova ad essere un problema è che myFn
potrebbe essere stato inline per il momento GHC tenta di utilizzare la regola (in modo non ci sarà niente da fare a fuoco su). In generale, capire esattamente quando abilitare le tue regole è la parte difficile!
Problemi correlati
- 1. Esistono "regole" per lo zucchero sintattico di Ruby?
- 2. inizia con lo zucchero sintattico OCaml?
- 3. int.TryParse zucchero sintattico
- 4. Scala Map: misterioso zucchero sintattico?
- 5. Le incomprensioni di Scala: caratteristica vitale o zucchero sintattico?
- 6. rubino zucchero sintattico: si tratta di Nils
- 7. zucchero sintattico try-catch in java
- 8. Comprensioni elenco C# = puro zucchero sintattico?
- 9. Generico zucchero sintattico o vero miglioramento
- 10. Decoratori in pitone solo zucchero sintattico?
- 11. "sincrono" è davvero solo zucchero sintattico?
- 12. Generatore di regole di riscrittura?
- 13. Rimozione zucchero sintattico: Lista di comprensione in Haskell
- 14. Stenografia per il ciclo - zucchero sintattico in C++ (11)
- 15. è l'operatore "è" solo zucchero sintattico per il metodo "IsInstanceOfType"
- 16. Regole di riscrittura che non si attivano per le regole che corrispondono a più metodi di istanza
- 17. Le mie regole di riscrittura dell'URL IIS7 continuano a scomparire
- 18. Come si scrivono le regole di riscrittura per i metodi di tipizzazione?
- 19. Dove sono le regole magiche per GHC asserire?
- 20. IIS 7.5. Impossibile disabilitare le regole di riscrittura degli URL (ho eliminato le regole ma hanno ancora effetto)
- 21. Sostituzione regole di riscrittura IIS nella trasformazione web.config
- 22. Regole di riscrittura di Apache non applicate per angularjs
- 23. Funzioni di ordine superiore in C come zucchero sintattico con il minimo sforzo
- 24. Può apache regole di riscrittura vanno in httpd.conf
- 25. Regole di riscrittura di WordPress multi sito in Nginx
- 26. Assistenza nella conversione regole di riscrittura Apache2 di Nginx
- 27. problemi con UTF-8 caratteri e regole di riscrittura apache2
- 28. In che modo lo zucchero sintattico della sequenza ([1..6]) viene tradotto nella sintassi dell'elenco effettivo (1: 2: 3 ... 6)?
- 29. Le regole di riscrittura htaccess causano errori durante l'invio del modulo
- 30. La parola chiave 'yield' è uno zucchero sintattico? Qual è la sua implementazione
Sappiamo tutti che la costruzione di liste come '[a, b, c]' è solo zucchero per 'a: b: c: []', quindi queste due espressioni sono equivalenti, ma la seconda è la forma migliore per il modello corrispondenza. – AJFarmar
Lo zucchero sintattico non ha importanza per le regole di riscrittura. – augustss