J'ai un type pour représenter les types de haskell:Haskell: infix d'impression Jolie et le préfixe
data Type
= TApp Type Type
| TVar Name
| TLit Name
infixl 8 `TApp`
-- a -> b
aToB = TLit "Fun" `TApp` TVar "a" `TApp` TVar "b"
-- Maybe (IO Int)
maybeIOInt = TLit "Maybe" `TApp` (TLit "IO" `TApp` TLit "Int")
Je veux imprimer comme haskell fait, à savoir littéraux qui sont des symboles sont imprimés infix tandis que d'autres préfixes sont littérale . également entre parenthèses devraient être ajoutés si nécessaire:
show aToB = "a -> b"
show maybeIOInt = "Maybe (IO Int)"
show ast = ???
Comment puis-je mettre en œuvre ce?
Si vous êtes en train de faire cela pour votre propre gouverne, je comprends, sinon je vous indiquer le [haskell-src-exts] (https://hackage.haskell.org/package/haskell-src-exts-1.19.1/docs/Language-Haskell-Exts-Pretty.html) qui a à la fois une jolie imprimante et une imprimante exacte pour le code Haskell. –