Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Misuse of withDelayedSucceeding #72

Closed
jvoigtlaender opened this issue Jan 23, 2025 · 4 comments
Closed

Misuse of withDelayedSucceeding #72

jvoigtlaender opened this issue Jan 23, 2025 · 4 comments

Comments

@jvoigtlaender
Copy link
Member

Eigentlich ist withDelayedSucceeding für Situationen gedacht, wo von Autotool aus ein Delayed ankommt und keine weitere Kontrolle darüber besteht. Wenn man selbst das delayed erst einführt wie in

withDelayedSucceeding
(checkSemantics' nSol columns names)
parser
$ delayed $ stringTuple (stringList headers) formula
dann lässt sich das "wegcanceln".

Spezifischer ist

withDelayedSucceeding whatToDo parser (delayed answer)

äquivalent zu:

whatToDo (fromRight' (parse (fully parser) "" answer))

Vielleicht wäre es sinnvoller, für fromRight' (parse (fully parser) "" answer) oder für parse (fully parser) "" answer eine Hilfsfunktion einzuführen (ggfs. in logic-tasks, wo es schon diverse ähnliche Funktionen mit spezielleren Typen gibt, etwa Trees.Parsing.formulaParse), wodurch sich obiger Code dann schreiben ließe als:

  checkSemantics' nSol columns names $
    newFunction (stringTuple (stringList headers) formula))

Bzw. sogar:

  checkSemantics' nSol columns names
    (newFunction (stringList headers), newFunction formula)
@jvoigtlaender
Copy link
Member Author

Ein möglicher Name für die Funktion inklusive fromRight' wäre newFunction = parseSucceeding.

@jvoigtlaender
Copy link
Member Author

@jvoigtlaender
Copy link
Member Author

Auch dies hier:

parseDelayedWithAndThen
parser
complainAboutMissingParenthesesIfNotFailingOn
allSymbolParser
(checkSyntax' names)
$ delayed $ stringTuple (stringList $ map fst xs) formula
scheint mir konzeptionell nicht so ganz sinnvoll (das Ein- und Auspacken von String-Tupeln und Delayed).

Ich vermute, da ist irgendwas in dieser Art möglich:

  parsingWithFallback complainAboutMissingParenthesesIfNotFailingOn allSymbolParser (stringList $ map fst xs)
     (parsingWithFallback complainAboutMissingParenthesesIfNotFailingOn formulaSymbolParser formula . checkSyntax' names)
  where parsingWithFallback messaging fallBackParser s f = parseDelayedWithAndThen parser messaging fallBackParser f (delayed s)

wobei die parsingWithFallback-Funktion durch Inlining von parseDelayedWithAndThen und delayed noch vereinfacht werden könnte und wohl bereits in logic-tasks bereitgestellt werden könnte, statt sie hier zu definieren.

@jvoigtlaender
Copy link
Member Author

Also already closed by #77 now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant