小编Mik*_*ero的帖子

Haskell Fibonacci解释

我对Haskell很陌生,我试图围绕Fibonacci序列的懒惰表达如何工作.

我知道之前已经问过这个问题,但是没有一个答案解决了我在查看结果时遇到的问题.

代码是使用的规范 zipWith

fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
Run Code Online (Sandbox Code Playgroud)

我理解以下内容:

  1. zipWith 字面上将两个列表拉到一起
  2. tail 抓取除列表的第一个元素之外的所有元素
  3. Haskell将'to-be'计算数据引用为thunks.

从我的理解,它首先添加[0,1,<thunk>][1,<thunk>]使用zipWith (+)给予[1,<thunk>].所以现在你有

fibs = 0 : 1 : 1 : zipWith (+) fibs (tail fibs)
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索过的很多参考文献都开始将上面的线"可视化"为

fibs = 0 : 1 : 1 : zipWith (+) [1,1,<thunk>] ([1,<thunk>]).
Run Code Online (Sandbox Code Playgroud)

我的问题是:

为什么 fibs 上面一行中 组件只对应[1,1,<thunk>] 而不是 [0,1,1,<thunk>]

不应该fibs包含整个列表加<thunk>

haskell functional-programming fibonacci lazy-evaluation thunk

9
推荐指数
1
解决办法
362
查看次数

在Ruby中按索引从数组中删除多个元素

我有一个数组。例如,

x = [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

我知道命令

x.delete_at(i)
Run Code Online (Sandbox Code Playgroud)

将从数组中删除索引i处的元素。但从我所读到的,它只能处理一个论点。

假设我有一个变量来存储我希望从x 中删除的索引。例如,

y = [0,2,3]
Run Code Online (Sandbox Code Playgroud)

我的问题:是否可以使用存储在要删除的索引中的另一个数组从数组中删除多个元素?

本质上,类似

x.delete_at(y)
Run Code Online (Sandbox Code Playgroud)

谢谢!:)

ruby arrays

8
推荐指数
1
解决办法
6727
查看次数