ik ben een algemene wiskundige rekenmachine aan het schrijven in haskell. je kunt hierbij onder andere je eigen operators definiëren. mijn probleem is nu, hoe ik een gebruiker kan laten aangeven wat de precedence van een nieuwe operator is.
tot nu toe representeerde ik precedence als de plaats die de operator inneemt in een lijst van groepen operators:
maar ik heb geen idee hoe ik nu iemand moet laten aangeven waar in deze lijst een nieuwe operator terecht moet komen.
complicaties:
- het aantal operators noch het aantal precedence levels staat vast: als je meer modules geladen hebt, zijn er meer operators en meer levels
- de benodigde methode moet ook bruikbaar zijn in batch mode; ik kan dus niet een lijstje met de huidige levels aan de gebruiker presenteren en hem/haar zo een level laten kiezen.
ik zou precedence kunnen representeren als een getal (zoals haskell zelf ook doet), maar dit heeft nadelen:
• het is onmogelijk om een precedence level te creëren tussen twee levels die maar 1 verschillen (of je zou met breuken moeten werken
)
• getallen zeggen een gebruiker niets; je moet eerst opzoeken wat de getallen zijn van operators waar je iig boven of onder wil komen in precedence
heeft iemand een alternatieve oplossing of tips?
tot nu toe representeerde ik precedence als de plaats die de operator inneemt in een lijst van groepen operators:
code:
1
| [ [ ^ ] , [ * , / ] , [ + , - ] ] |
maar ik heb geen idee hoe ik nu iemand moet laten aangeven waar in deze lijst een nieuwe operator terecht moet komen.
complicaties:
- het aantal operators noch het aantal precedence levels staat vast: als je meer modules geladen hebt, zijn er meer operators en meer levels
- de benodigde methode moet ook bruikbaar zijn in batch mode; ik kan dus niet een lijstje met de huidige levels aan de gebruiker presenteren en hem/haar zo een level laten kiezen.
ik zou precedence kunnen representeren als een getal (zoals haskell zelf ook doet), maar dit heeft nadelen:
• het is onmogelijk om een precedence level te creëren tussen twee levels die maar 1 verschillen (of je zou met breuken moeten werken
• getallen zeggen een gebruiker niets; je moet eerst opzoeken wat de getallen zijn van operators waar je iig boven of onder wil komen in precedence
heeft iemand een alternatieve oplossing of tips?
Pas de replâtrage, la structure est pourrie.