我不明白为什么在以下代码中会出现“GHC阶段限制”:
import Language.Haskell.TH
rules :: [ExpQ]
rules = [ [| \a -> a |], [| \_ -> 1 |] ]
findTransforms :: Int -> [ExpQ] -> Bool
findTransforms _ [] = False
findTransforms e (r:rs) = if ($r e) == 1 then True else findTransforms e rs
如果代码没有做任何有用的事情也不要担心 - 它是为了清晰起见而提取的最小化示例混淆代码。
我不从拼接的代码中调用任何函数。 为什么需要阶段限制?
编辑1:已编辑以提供更简单的代码示例。