实现懒惰列表,最好使用您不太熟悉的语言[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 3年前关闭。 这是一个很好的练习,可以使您更加流利地使用您一直想学习的编程语言,但是只需要稍加修改即可。这涉及使用对象,使用或模拟闭包以及扩展类型系统。 您的任务是编写代码来管理惰性列表,然后使用它来实现生成斐波那契数字的算法: 代码示例在Haskell中 let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in take 40 fibs 结果: [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986] 您的惰性列表实现应符合以下准则: 列表节点是三件事之一: 无-空列表。 [] 缺点-一个单一项目,其余项目的列表配对: 1 : [2,3,4,5] (:是在Haskell利弊运营商) Thunk-延迟计算,在需要时会生成List节点。 它支持以下操作: nil-构造一个空列表。 缺点-构建一个缺点单元格。 thunk-给定一个不带参数且返回Nil或Cons的函数,构造一个Thunk。 强制-给定一个List节点: 如果是Nil或Cons,只需将其返回即可。 如果是Thunk,则调用其函数以获取Nil或Cons。用该Nil或Cons替换该thunk,然后将其返回。 注意:用其强制值替换thunk是“ lazy”定义的重要组成部分。如果跳过此步骤,则上面的斐波那契算法将太慢。 空-查看List节点是否为Nil(强制后)。 head(又名“ …