gpt4 book ai didi

haskell - 使用严格注释将 GHC 引入无限循环

转载 作者:行者123 更新时间:2023-12-03 13:36:36 24 4
gpt4 key购买 nike

出于某种原因,我需要欺骗 Haskell 执行一个无限循环,而不是仅仅检测它并用 <<loop>> 退出。 ,但这样做太聪明了。是否有任何方便的示例说明循环是由严格注释( ! )引起的,或者我可以关闭循环检测吗?目前我正在做

x = x + y
y = x + y
inf !n = 0

main = do
print $ inf x

最佳答案

这应该这样做:

{-# LANGUAGE BangPatterns #-}
f :: Int -> Int
f x = if x >= 0 then f (x + 1) else 0

fun !n = 0

main = print $ fun $ f 0

在我添加 if 之前,GHC 确实似乎很聪明地发现了循环。它甚至发现了递归函数调用。

我已经用 -O3 测试过了在 GHC 7.10 上。

编辑:添加了额外的功能 fun正如提问者所建议的那样,只是为了满足涉及爆炸模式的要求。它与循环本身并不真正相关。也从 Integer 改变了至 Int正如另一个答案所建议的那样,以确保持续使用内存。

关于haskell - 使用严格注释将 GHC 引入无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31776828/

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