我无法弄清楚为什么我在以下代码中得到“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
(如果代码没有提供任何有用的东西,请不要担心——为了清楚起见,它被提取的最小示例被混淆了)。
我不会从拼接代码中调用任何函数。为什么是阶段限制?
EDIT1:编辑以提供更简单的代码示例