我只是想知道是否有可能实现功能性 语言做网站更换。我设想这个 作为一种特殊的懒惰形式。
基本上我会在某处调用函数f 参数a:
... (f a) ...
然后该功能将设法替换自己 通过带有参数b的函数g:
... (g b) ...
使下次原始呼叫站点(f a)
实际调用(g b)被调用。
欢迎提示。
再见
P.S。:用于即时(JIT)编译。
多态内联缓存等。
例如见:
优化动态类型的面向对象的
多态内联缓存的语言
UrsHölzle,Craig Chambers,David Ungar
ECOOP '91欧洲诉讼程序
面向对象编程会议
http://selflanguage.org/_static/published/pics.pdf
答案 0 :(得分:13)
这基本上就是自动机箭头:
newtype Auto a b = Auto (a -> (b, Auto a b))
在Haskell中,函数无法替换自身,但自动机箭头表示返回其自身新版本的函数以及结果:
switcher :: Bool -> Auto Bool Bool
switcher x =
Auto $ \y ->
(x, switcher $ if y then not x else x)
关于自动机箭头的有用之处在于它是一个箭头,因此Category
实例允许您组合这些函数。还有一个非常有用的应用实例。
附注:这是箭头化功能反应式编程(AFRP)的基础。
答案 1 :(得分:2)
在Haskell中,您可以通过RULES编译指示提供自定义优化重写 有关详细信息,请参阅the GHC user guide > Rewrite Rules。