小编Cha*_*dan的帖子

对于内联的Rust中的const类型是什么意思?

我是Rust和系统编程的绝对初学者.constRust 的文档说明了这一点:

常量适用于程序的整个生命周期.更具体地说,Rust中的常量在内存中没有固定地址.这是因为它们有效地内联到他们使用的每个地方.由于这个原因,对同一常量的引用不一定保证指代相同的存储器地址.

我只是const在C++中遇到过,但从来没有内联const类型.有人可以提供一个初学者友好的解释,如何工作?

另外,我有点困惑const.这是否意味着每次我们使用该const类型时,堆栈中的值仅为此表达式分配,并且在表达式执行完毕后,它将被销毁

const inline rust

6
推荐指数
2
解决办法
521
查看次数

什么时候我应该使用元组结构超过正常元组?

在Rust Programming Language一书中,在Structs一章中我们介绍了元组结构.

在哪些情况下我应该使用元组结构而不是正常的元组(除了书中提到的例子)?

types rust

5
推荐指数
1
解决办法
613
查看次数

了解如何:冲刺和列表评估在haskell中有效

我正在研究haskell书,我理解:sprint x用于打印x的元素已经被评估,而元素则没有(那些不是由'_'表示的).

书中提供的一个例子,

Prelude> let blah = enumFromTo 'a' 'z' 
Prelude> :sprint blah 
blah = _

Prelude> take 1 blah 
"a" 
Prelude> :sprint blah 
blah = 'a' : _
Run Code Online (Sandbox Code Playgroud)

为了测试不同的输入,我在GHCi中做了这个: -

prelude> let b = [1,2,3,4,5]
prelude> :sprint b
b = _
prelude> take 1 b
[1]
prelude> :sprint b
b = _
Run Code Online (Sandbox Code Playgroud)

:sprint b最后一个命令的输出不应该是b = 1 : _因为我们在使用命令时只评估一个列表项和一个cons运算符take 1 b?? 但它显示了上面的输出.这是怎么发生的?输出不应该类似于String类型的输出吗?

编辑:我一直在尝试更多并得到这个结果: -

prelude> let b = [1..10] :: [Int] …
Run Code Online (Sandbox Code Playgroud)

evaluation haskell list

3
推荐指数
1
解决办法
99
查看次数

如何在Rust的32位机器中表示f64类型?

我刚刚意识到f64即使在具有一点性能权衡的32位机器中我们也可以使用类型.但是,这在Rust中是如何实现的?是否将两种f32类型捆绑在一起作为临时f64类型?幕后还有别的什么东西?

有人可以解释如何在不深入挖掘内部锈蚀的情况下完成这项工作吗?(我对Rust仍然很新).

types rust

3
推荐指数
1
解决办法
225
查看次数

发生运行时混乱时,堆栈/堆分配类型会发生什么?

在发生恐慌之前在堆或堆栈上分配的类型会发生什么?是否已调用析构函数以便取消分配类型?他们在记忆中徘徊等待被其他一些过程覆盖吗?或者它完全是另一回事?

我不知道,因为我是Rust和系统编程的新手.

memory-management runtime panic rust

2
推荐指数
1
解决办法
72
查看次数

将无限列表的表示理解为haskell中部分列表的限制

我正在阅读这篇文章,它解释了Haskell的非严格语义.直到作者开始讨论Haskell中的Partial和Infinite Lists,我才明白.

作者说: -

这个想法是无限列表被理解为部分列表的限制.


之后,作者继续解释表达式的执行: -

filter (< 3) [1..]

结果有点违背我对预期输出的直觉.我认为答案就是清单: - [1, 2].但是,不!虽然作者解释了足以理解执行过程以及我们如何得到最终结果,但它并不能解释为什么它如此工作.

所以,我的问题是为什么无限列表被表示为一堆部分列表的限制?有人可以解释这个问题而不必深入研究复杂的数学术语吗?

谢谢

haskell types list infinite

2
推荐指数
1
解决办法
100
查看次数

何时使用以及何时不在haskell中使用无点样式?

我刚学会了Haskell中的无点样式,以及它如何帮助整理代码并使其更易于阅读.但有时他们可以使代码有点过于简洁.

所以,当我应该总是使用无点样式时,在什么情况下我应该绝对避免在Haskell中使用无点样式?

haskell function pointfree

0
推荐指数
1
解决办法
132
查看次数