在Haskell中记住Double函数

rpr*_*ero 3 haskell memoization

我有一个功能

slow :: Double -> Double
Run Code Online (Sandbox Code Playgroud)

它经常被调用(数亿次),但只能调用大约一千个离散值.这似乎是备忘录的绝佳选择,但我无法弄清楚如何记住Double的功能.

制作列表的标准技术不起作用,因为它不是一个整体类型.我查看了Data.MemoCombinators,但它本身并不支持双打.有一个bits处理更多数据类型的函数,但Double 不是一个实例Data.Bits.

有一种优雅的方式来记住`慢?

aug*_*tss 6

你总是可以使用丑陋的备忘录.内部是不纯的,但它很快并且做你需要的(除非参数是NaN).