gpt4 book ai didi

haskell - 函数式编程语言中的调用站点代码替换

转载 作者:行者123 更新时间:2023-12-04 21:58:59 26 4
gpt4 key购买 nike

我只是想知道是否有可能在功能
语言做调用站点替换。我设想这个
作为一种特殊形式的懒惰。

基本上我会在某处调用函数 f
有一个参数 a:

... (f a) ...

然后该函数将设法替换自身
通过带有参数 b 的函数 g:
... (g b) ...

以便下次原调用站点(f a)
被调用实际上 (g b) 被调用。

欢迎提示。

再见

P.S.:它用于即时 (JIT) 编译。
多态内联缓存等。
见例如:

动态优化 - 类型化对象 - 面向
具有多态内联缓存的语言

乌尔斯·霍尔兹勒、克雷格·钱伯斯、大卫·安加
ECOOP '91 欧洲 session 录
面向对象程序设计 session
http://selflanguage.org/_static/published/pics.pdf

最佳答案

这基本上是自动机箭头:

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实例允许您编写此类函数。还有一个非常有用的应用实例。

旁注:这是箭头化函数式响应式(Reactive)编程 (AFRP) 的基础。

关于haskell - 函数式编程语言中的调用站点代码替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13017072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com