This module exports
scopeLookup, which will find a variable or
value constructor for you and present it for your use. E.g. at some
point in the history of the acid-state package,
openLocalState; for compatibility with both, you could
openState :: IO (AcidState st) openState = case $(scopeLookup "openLocalState") of Just open -> open defaultState Nothing -> case $(scopeLookup "openAcidState") of Just open -> open defaultState Nothing -> error "openState: runtime name resolution has its drawbacks :/"
Or, for this specific case, you can use
openState :: IO (AcidState st) openState = open defaultState where open = $(scopeLookups ["openLocalState","openAcidState"])
Now if neither of the names are found then TH will throw a compile-time error.
Finds the first string in the list that names a value, and produces a spliceable expression of that value, or reports a compile error if it fails.