Есть ли способ заставить Haskell расширять определенные преобразователи во время выполнения. Например, скажем, у меня есть
--Purposely inefficient code for demonstration
fib 0=0
fib 1=1
fib n=fib n=fib (n-1) + fib (n-2)
goldRatio=fib 100 / fib 101
Как я мог оценить goldRatio
во время компиляции. Как, например, с
{-# EVALUATE goldRatio #-}
Это должно было быть только в слабой форме головы, так как Control.Deepseq.force
мог справиться с остальным. Я слышал, что шаблон Haskell может это сделать, но я не очень хорошо это знаю.
Примечание. В настоящее время я использую GHC.