gpt4 book ai didi

haskell - 这计算了帕斯卡三角形的多少?

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

如果我将这个常量 pascal 定义为

pascal :: [[Int]]
pascal = iterate newrow [1]
where newrow = (zipWith (+) <*> tail) . ([0]++) . (++[0])

我评估pascal! 50! GHCI 中的 50 可以计算出多少三角形?这种惰性是否意味着只计算必要的值(加上一堆重击)?

最佳答案

是的,仅计算计算相关元素所需的元素。

GHCi 提供 :sprint:print 调试命令,可以为您提供有关值的哪些部分已被评估的一些信息。

在此示例中:

GHCi> :sprint pascal
pascal = _

(这是因为此时尚未评估任何内容,并且 thunk 显示为 _。)

GHCi> pascal !! 5 !! 5
1

(我没有使用 50,因为这样这个示例就会变得太长。)

GHCi> :sprint pascal
pascal = [1] : [_,1] : [_,_,1] : [_,_,_,1] : [_,_,_,_,1] :
(_ : _ : _ : _ : _ : 1 : _) : _

现在您可以非常清楚地了解哪些部分已被查看。

让我们再尝试一下:

GHCi> pascal !! 5 !! 4
5
GHCi> :sprint pascal
pascal = [1] : [1,1] : [_,2,1] : [_,_,3,1] : [_,_,_,4,1] :
(_ : _ : _ : _ : 5 : 1 : _) : _

还有一个:

GHCi> pascal !! 10 !! 5
252
GHCi> :sprint pascal
pascal = [1] : [1,1] : [1,2,1] : [1,3,3,1] : [1,4,6,4,1] :
(1 : 5 : 10 : 10 : 5 : 1 : _) :
(_ : 6 : 15 : 20 : 15 : 6 : _) :
(_ : _ : 21 : 35 : 35 : 21 : _) :
(_ : _ : _ : 56 : 70 : 56 : _) :
(_ : _ : _ : _ : 126 : 126 : _) :
(_ : _ : _ : _ : _ : 252 : _) : _

关于haskell - 这计算了帕斯卡三角形的多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26729146/

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