小编huy*_*uyz的帖子

为什么Haskell(GHC)如此快速?

Haskell(使用GHC编译器)比你期望的要快很多.如果使用得当,它可以与低级语言保持密切联系.(Haskellers最喜欢的事情是尝试在C的5%范围内(或者甚至击败它,但这意味着你使用的是低效的C程序,因为GHC将Haskell编译为C).)我的问题是,为什么?

Haskell是声明性的,基于lambda演算.机器架构显然势在必行,粗略地基于图灵机.实际上,Haskell甚至没有具体的评估顺序.此外,您不必处理机器数据类型,而是始终生成代数数据类型.

最奇怪的是更高阶函数.你会认为动态创建函数并抛出它们会使程序变慢.但是使用更高阶函数实际上使Haskell更快.实际上,似乎要优化Haskell代码,你需要使它更优雅和抽象,而不是更像机器.如果Haskell的更高级功能没有改进,它们似乎甚至都不会影响它的性能.

很抱歉,如果这听起来不错,但这是我的问题:为什么Haskell(使用GHC编译)如此之快,考虑到它的抽象性质和与物理机器的差异?

注意:我说C和其他命令式语言有点类似于图灵机的原因(但不是Haskell类似于Lambda微积分)是因为在命令式语言中,你有一个有限数量的状态(也就是行号) ,以及磁带(ram),以便状态和当前磁带确定对磁带做什么.有关从图灵机到计算机的过渡,请参阅维基百科条目,图灵机等效项.

performance haskell lambda-calculus ghc higher-order-functions

223
推荐指数
3
解决办法
4万
查看次数

50
推荐指数
2
解决办法
5万
查看次数

不区分大小写的字符串以Python开头

以下是我如何检查是否mystring以某个字符串开头:

>>> mystring.lower().startswith("he")
True
Run Code Online (Sandbox Code Playgroud)

问题是mystring很长(数千个字符),所以lower()操作需要很多时间.

问题:有更有效的方法吗?

我不成功的尝试:

>>> import re;
>>> mystring.startswith("he", re.I)
False
Run Code Online (Sandbox Code Playgroud)

python string performance startswith case-insensitive

42
推荐指数
3
解决办法
3万
查看次数

Google+如何在后台在iOS上自动备份我的照片?

鉴于iOS 6.x限制,Google+应用的照片自动备份功能如何实施?即使我不再运行Google+应用,它似乎也可以上传我的相机胶卷照片.

iOS开发者文档 说,短流程,"你需要执行一个有限长度的任务",可以长期运行的过程中,照片上传似乎并没有成为一个批准的用途.

background-process ios google-plus

12
推荐指数
1
解决办法
1864
查看次数

如何在knitr中禁用整个代码块?

有没有办法完全禁用knitr中的代码块,以便既不评估也不输出?

r knitr

7
推荐指数
1
解决办法
5041
查看次数

为什么float div和non-float div的顺序仅在某些情况下有效?

我有一个类似于CSS Auto Margin按下其他元素的问题:右浮动侧边栏被推到主非浮动内容div下面.建议的答案是:只需反转标记的顺序,并在非浮点div 之前写出浮点div.

例如,这个:

<div class="container">
    <div id="non-floating-content">
        fooburg content
    </div>
    <div id="float-right">
        test right
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

需要笨拙地重新订购:

<div class="container">
    <div id="float-right">
        test right
    </div>
    <div id="non-floating-content">
        fooburg content
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

那么,为什么这也可以在没有重新排序的情况下工作:使用基于网格的设计的最大宽度和最小宽度的弹性布局?查看现场演示.标记的顺序仍然合理:float div 在非浮点div 之后写出.然而浮动不会被推到页面上.

我问,因为我不想破解主题PHP(重新排序div)以便正确地设计它.

其他也说解决方案的帖子是"重新订购你的div":

html css fluid-layout

6
推荐指数
1
解决办法
935
查看次数

固定内联块div,负边距和浮动浮动:-4px有什么特别之处?

这很奇怪.我正在尝试在右浮动div旁边有一个固定宽度的div,我不想重新排序div(因为这是分布式主题).所以我在固定div上使用负边距右边,我觉得奇怪的是:如果它是-4px或更小,那么浮动移动到一边; 否则,它会保持在低于.

与戏剧的代码现场演示在jsbin,其中有这样的:

<style>
  .container {
    width: 200px;
    height: 200px;
  }
  .box {
    width: 100px;
    height: 100px;
  }
  .one {
    margin-right: -4px; /* If <= -4, .two box shifts up */
    display: inline-block;
  }
  .two {
    float: right;
  }
</style>
  <div class="container">
    <div class="box one"></div>
    <div class="box two"></div>
  </div>
Run Code Online (Sandbox Code Playgroud)

有人可以解释这个谜吗?在这种情况下,数字-4有什么特别之处?

html css margin css-float

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

如何在Chrome JS控制台中访问内容脚本的沙盒环境

如果我在Chrome开发者工具中打开JavaScript控制台来调试扩展程序的内容脚本,我就不会获得内容脚本的上下文.例如,jQuery是不可访问的,除非我去调试器并设置断点,否则我无法访问我的全局变量.

我只是错过了一些东西吗?能够从JS控制台检查我的全局变量或调用jQuery会很棒.

javascript-debugger google-chrome-extension google-chrome-devtools

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

ModuleNotFoundError:在 macos 上使用 pyenv 构建 python 时没有名为“_lzma”的模块

尝试使用 pyenv 在 macOS 上构建 python 版本,但我所做的每次安装都以

? python
>>> import lzma

ModuleNotFoundError: No module named '_lzma'
Run Code Online (Sandbox Code Playgroud)

我已经安装了以下所有软件包:

brew install openssl readline sqlite3 xz zlib
xcode-select --install
Run Code Online (Sandbox Code Playgroud)

唯一需要注意的是 homebrew 将软件包安装到~/.brew.

任何意见都会受到赞赏。

python macos homebrew lzma pyenv

4
推荐指数
5
解决办法
6613
查看次数

在javascript中查找捕获关键事件的函数?

我正在为复杂的Web应用程序编写用户脚本.现有代码正在捕获'j'和'k'keydown事件.

我希望能够找到这个功能,看看它在做什么.有没有办法列出文档中的所有关键事件处理程序?或者也许是一种在Chrome开发者工具中以某种方式设置断点的方法,当我按下这封信时?

javascript javascript-events keydown google-chrome-devtools

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