Poiché gli alberi di sintassi di Roslyn sono immutabili, e il lavoro con i compilatori riguarda essenzialmente le trasformazioni (che è esattamente ciò che fa la programmazione funzionale), ho pensato che usare Roslyn in F # potesse essere una grande idea.
Quindi, è possibile combinare Roslyn e F #? Qualcuno l'ha provato prima? Ha qualche vantaggio rispetto all'utilizzo di C#? E se è possibile, vale la pena di iniziare a imparare F #?
PS: Ho una certa esperienza nella programmazione funzionale con Scheme e sto attualmente imparando Haskell, ma non ho ancora assaggiato F #.
Utilizzo di Roslyn in F #
risposta
Ho pensato che usare Roslyn in F # potrebbe essere una buona idea.
È sicuramente una grande idea. Alcune persone si sono chieste perché Roslyn non sia stato scritto in F # poiché la lingua è molto buona per scrivere compilatori (vedere http://neildanson.wordpress.com/2012/12/24/the-roslyn-incident/ come riferimento).
È molto facile eseguire la corrispondenza con gli AST Roslyn una volta definito un set di active patterns componibile. Vedi https://gist.github.com/jbevain/01a083c07010bc7b7cd0 come esempio convincente. Poiché gli AST di Roslyn sono immutabili, puoi anche creare combinatori per trasformarli in base al tuo scopo. I sindacati discriminati potrebbero essere usati come tipi di dati immediati se l'obiettivo è quello di sputare di nuovo i C# AST.
Lo svantaggio dell'uso di F # è che non si trovano molti esempi completi utilizzando l'API Roslyn in F #. Abbiamo un piano approssimativo per integrate Roslyn in Visual F# Power Tools. Diciamo che hai una soluzione mista C#/F #; se si desidera passare alle definizioni di un simbolo C# da un progetto F #, Roslyn è necessario per elaborare il codice C# a tale scopo. Tuttavia, ciò richiede una grande quantità di lavoro; Non so se qualcuno ci abbia lavorato.
- 1. Utilizzo di MSTest con F #
- 2. Utilizzo di f-score in xgb
- 3. Utilizzo degli attributi di assieme in F #
- 4. Utilizzo di OpenCV da F #
- 5. F # (.. ..) utilizzo/sovraccarico dell'operatore
- 6. F #: utilizzo di INotifyPropertyChanged per associazione dati
- 7. Esegui codice F # in C# - (Come C# in C# usando Roslyn)
- 8. VisitClassDeclaration node.Identifier in Roslyn
- 9. Formattazione estensibile in Roslyn?
- 10. Utilizzo del compilatore Roslyn con Visual Studio 2013
- 11. Utilizzo dell'evento F # nel codice multi-thread
- 12. Roslyn Scripting
- 13. Aggiunta di metadataReference in Roslyn Vs Microsoft.CodeAnalysis
- 14. Roslyn tempo di avvio lento
- 15. F # ciclo continuo in F #
- 16. Utilizzo del comando f di vim su più righe
- 17. Microsoft Roslyn vs. CodeDom
- 18. Documentazione API Roslyn
- 19. Strutturazione struct Objectollolo Roslyn
- 20. Roslyn - Crea metadatiRiferimento dall'assembly in memoria
- 21. Roslyn e debug
- 22. Roslyn SyntaxTree Diff
- 23. Roslyn C cambiamento # incrementazione
- 24. Collegamento al processo di compilazione di Roslyn
- 25. Come dividere F [A \/B] in (F [A], F [B])
- 26. in F #
- 27. Roslyn documenti di progetto carico faililng
- 28. I nodi sintattici di Roslyn sono riutilizzati?
- 29. ASP.NET: Roslyn lento sulle modifiche di pagina
- 30. esplicita tipo ricorsione in F #
So che 'Roslyn' applica' C# ', ma come si applica questo tag (' C# ') a questa domanda? –
Causa in primo luogo si tratta di manipolare il codice C# e l'albero della sintassi! Anche se posso vedere il tuo punto. – Rsh