小编jsa*_*sau的帖子

变量名x和xs的历史是什么?

我想要拿起一些Haskell,我在敬畏和迷惑之间交替.对我来说真正疏远的事情之一,就像这似乎是微不足道的,是模式匹配成语(x:xs).这些变量名称来自哪里?它们可以是任何东西 - (kernel:cob),(spam:eggs)(稍微倾一下手),或者 - 最明智的,在我的脑海里(h:t),代表"头"和"尾巴".

我想这个x前缀对于指示两个项目都来自同一个列表非常有用,所以当时(xh:xt)或者甚至只是(x:xt)感觉特别简洁.但为什么s?这是什么意思?它从哪里来的?我觉得,此刻,知道会帮助我应对我的困惑.

也许我正在以错误的方式思考这个问题; 请随时告诉我.

haskell naming-conventions

33
推荐指数
3
解决办法
2287
查看次数

当python添加小的int时,幕后会发生什么?

id最近在摆弄并意识到(c?)Python做了一些非常明智的事情:它确保小的int总是有相同的id.

>>> a, b, c, d, e = 1, 2, 3, 4, 5
>>> f, g, h, i, j = 1, 2, 3, 4, 5
>>> [id(x) == id(y) for x, y in zip([a, b, c, d, e], [f, g, h, i, j])]
[True, True, True, True, True]
Run Code Online (Sandbox Code Playgroud)

但后来我想知道数学运算的结果是否也是如此.原来它是:

>>> nines = [(x + y, 9) for x, y in enumerate(reversed(range(10)))]
>>> [id(x) == id(y) for x, y in nines]
[True, True, True, True, True, True, …
Run Code Online (Sandbox Code Playgroud)

python integer cpython

22
推荐指数
2
解决办法
849
查看次数

可变和不可变类型背后的理论是什么?

我钦佩Python的一个原因是它区分了可变类型和不可变类型.在进入Python之前花了一段时间在c编程,我很惊讶Python如何轻松地消除指针解除引用的所有复杂性,这让我很生气.在Python中,一切都按照我期望的方式工作,我很快意识到可变/不可变的区别在其中起着重要作用.

当然还有一些皱纹(可变函数参数默认是一个值得注意的例子)但总的来说,我觉得可变/不可变的区别大大澄清了变量及其值什么以及它们应该如何表现的问题.

但是它来自哪里?我必须假设GvR不是第一个设想这种区别的人,并且Python不是第一个使用它的语言.我有兴趣听听使用这个概念的早期语言,以及任何早期的理论讨论.

python language-theory mutable immutability

18
推荐指数
3
解决办法
1930
查看次数