小编And*_*ffe的帖子

将"为什么功能编程很重要"翻译成Haskell

为了文化和智力的丰富,我决定学习一些Haskell.我一直在阅读休斯的"为什么功能编程很重要",并试图将其代码转换为真正的Haskell.我已经在下面附上了我的一些尝试(对于论文的数字部分; alpha-beta算法更有趣,但我还必须从头开始编写游戏评估器!).

在这一点上,它更像是Haskell语法中的一个练习而不是其他任何东西.我已经做过简单的事情,比如翻译repeat成原生的Haskell iterate,将一些使用了大量括号的函数转换成函数组合(在这个过程中使它们更加无点)等等.

但我的代码肯定有效,我想知道它是否足够"Haskell-ish".有没有专家给我一些提示?

-- 4.1 Newton-Raphson square roots
next n x = (x + n/x)/2.0

-- -- this is "iterate::(a->a)->a->[a]"
-- repeat f a  = a : iterate f (f a)

within eps (a:b:rest) = 
  if abs(a-b) <= eps 
    then b
    else within eps (b:rest)

sqroot a0 eps n = within eps (iterate (next n) a0)

relative eps (a:b:rest) = 
  if abs(a-b) <= eps*abs(b)
    then b
    else relative eps (b:rest)

relativesqrt a0 eps …
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming

14
推荐指数
2
解决办法
2703
查看次数

测试类中是否存在字段

我有一个快速的问题.我有一个存储类实例的2D数组.基于先前在程序中读取的文本文件,为数组的元素分配特定的类.由于我不知道没有在文件中查找哪个类存储在特定元素中,我可以引用该索引中不存在的字段(指的是当temp的实例存储在该索引中时的外观).我已经想出了一种测试方法,但它很长,需要第二个矩阵.是否有一个函数来测试类中字段的存在?

class temp():
   name = "default"

class temp1():
   appearance = "@"
Run Code Online (Sandbox Code Playgroud)

python class exists

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

来自numpy直方图输出的Matplotlib直方图

我已经numpy.histogram()在一大堆数据集的子集上运行了.我想将计算与图形输出分开,所以我不想调用matplotlib.pyplot.hist()数据本身.

原则上,这两个函数都采用相同的输入:原始数据本身,在分箱之前.该numpy版本仅返回nbin+1仓的边缘和nbin频率,而matplotlib版本的推移,使情节本身.

那么有没有一种简单的方法从numpy.histogram()输出本身生成直方图,而无需重做计算(并且必须保存输入)?

要清楚,numpy.histogram()输出是箱的nbin+1箱边缘列表nbin; 没有matplotlib例行程序将这些作为输入.

python numpy matplotlib histogram

13
推荐指数
2
解决办法
5278
查看次数

如何检查Python字典中是否存在多个键?

我有以下字典:

sites = {
    'stackoverflow': 1,
    'superuser': 2,
    'meta': 3,
    'serverfault': 4,
    'mathoverflow': 5
}
Run Code Online (Sandbox Code Playgroud)

要检查上面的字典中是否有多个键可用,我将执行以下操作:

'stackoverflow' in sites and 'serverfault' in sites
Run Code Online (Sandbox Code Playgroud)

只需2次密钥查找即可维护上述内容.有没有更好的方法来处理在一个非常大的字典中检查大量的键?

python

8
推荐指数
2
解决办法
582
查看次数

Github 存储库克隆到多台计算机上的同步 iCloud 驱动器

我有几台 Mac,我在上面克隆了相当数量的 git(主要是 GitHub)存储库。每个 Mac 都有许多 iCloud 驱动器同步目录(实际上我已经全力以赴,正在同步DesktopDocuments)。

我试图克隆到 iCloud 同步目录。但是,我在这方面遇到了很多问题。似乎很容易陷入 iCloud(而不是 git)变得如此困惑以至于一台机器有效停止同步的情况,即使是与克隆目录无关的文件,即使我小心地重新同步两个克隆中的每一个到完全相同的状态。我不知道问题是.git/在实际 repo 文件的版本之间存在竞争条件还是类似竞争条件的问题。

我尝试在 brctl 下使用 Apple 的各种 iCloud 日志记录工具,但这通常没有帮助。

有没有其他人看过这个或类似的东西?

(这与这个问题有些不同,这个问题似乎主要关心带有 iCloud 驱动器的单个 Mac,我认为在这种情况下的用户不会看到与我相同的问题。)

git icloud icloud-drive

7
推荐指数
2
解决办法
1201
查看次数

OS X 上使用 CSH 的 Visual Studio Code 的命令行别名?

VS Code编辑器很不错,我期待着使用它来了解有关 javascript 和 node.js 的更多信息。安装说明描述了类似 shell 的设置bash,但我是一个野蛮人,想将它与csh. 我也许可以把一些东西组合在一起,但是有一个明显的翻译吗

code () { VSCODE_CWD="$PWD" open -n -b "com.microsoft.VSCode" --args $* }
Run Code Online (Sandbox Code Playgroud)

变成一个csh alias

我认为这样的作品:

alias code "setenv VSCODE_CWD ${PWD} && open -n -b "com.microsoft.VSCode" --args $*"
Run Code Online (Sandbox Code Playgroud)

VSCODE_CWD但我想我真的想要一种使别名成为“本地”的方法,就像在 bash 版本中一样。

macos bash visual-studio-code

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

Bash提示缩短

我刚刚从移动tcshbash和使用我特别想念目录缩短提示选项%c02(带ellipsis也成立).

我看到这PROMPT_DIRTRIM几乎是正确的(除了省略号,我认为)但我只在bash3(在OS X上).我在SO的其他地方找到了这个食谱,缩短了总长度,所以打破了目录中间的路径名,这是我不喜欢的.

所以我想出了这个:

PROMPT_DIRTRIM=2   ## from bash4, but used here
dirtrim() 
{
    local NAME="$1" start= endelts=
    [[ "$NAME" =~ ^"$HOME"(/|$) ]] && NAME="~${NAME#$HOME}"  ## $HOME ==> ~
    IFS=/ read -ra elts <<< "$NAME";          ## split $PWD on "/"
    start=$((${#elts[@]}-${PROMPT_DIRTRIM}))  ## first element to retain
    if [ ${start} -gt 1 ]; then     
        for ((i=${start}; i<${#elts[@]}; i++)); do 
            endelts="${endelts}/${elts[$i]}"; ## concat together the trailing path …
Run Code Online (Sandbox Code Playgroud)

bash .bash-profile

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

python中的switch case不起作用; 需要另一种模式

我需要一个代码的帮助,我想在python中实现switch case模式,所以就像一些教程所说,我可以使用字典,但这是我的问题:

  # type can be either create or update or .. 
  message = { 'create':msg(some_data),
              'update':msg(other_data)
              # can have more
            }

  return message(type)
Run Code Online (Sandbox Code Playgroud)

但它不适合我,因为some_data或other_data可以是None(如果没有则会引发错误)并且msg函数需要很简单(我不想在其中加入一些条件).

这里的问题是每次执行函数msg()以填充dict,这与开关案例模式不同,后者通常在其他编程语言中不执行代码,case除非它是匹配的.

还有另一种方法可以做到这一点,或者我只需要做,如果elif ...

更新: 感谢您的所有回复,但实际上它更像是这样

message = { 'create': "blabla %s" % msg(some_data),
            'update': "blabla %s" % msg(other_data)
            'delete': "blabla %s" % diff(other_data, some_data)
           }
Run Code Online (Sandbox Code Playgroud)

所以lambda在这里不起作用而且没有调用相同的函数,所以它更像是我需要的真正的开关案例,也许我必须考虑其他模式.

python design-patterns

4
推荐指数
2
解决办法
1182
查看次数

OS X Python:我可以为扩展显式设置MACOSX_DEPLOYMENT_TARGET吗?

我在最新版本的OS X(即10.11 El Capitan)下使用python.org框架构建的Python.我需要构建一些依赖于最新版本编译器的扩展(例如,C++ - 11特性).然而,python.org python也可以在旧系统上运行,以实现向后兼容.

因此,它具有环境变量MACOSX_DEPLOYMENT_TARGET=10.6.这意味着默认情况下使用工具链构建扩展,我认为这些工具链模仿gcc-4.2,特别是在stdlib搜索内容方面.

在过去,我已经通过安装与自制更近的编译器,并明确设置固定此CC,CXX在安装之前,等等.

但是,我尝试过设置MACOSX_DEPLOYMENT_TARGET=10.11,这似乎有效.这样安全吗?有什么缺点吗?(我不需要分发这些构建,只需在本地使用它们吗?)

c++ python macos

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

以任意维数对numpy数组进行子采样

我有一个一n维的 numpy 数组(n原则上是未知的,但实际上它是一个很小的数字,通常n<=3)。我想对m每个方向的每个条目进行二次采样。所以对于二维数组,这将是

arr[::m, ::m]
Run Code Online (Sandbox Code Playgroud)

有没有办法将其概括为任意的n?(在实践中,我可以只检查值并使用上述的不同版本,但我怀疑有更优雅的方法)。

python arrays numpy

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

Python - 如何捕获方法内部的异常

我想知道是否有办法在被调用的方法中捕获异常.

例:

def foo(value):
    print value

foo(x)
Run Code Online (Sandbox Code Playgroud)

这将抛出NameError异常,因为未声明x.我想在foo方法中捕获这个NameError异常.有办法吗?

python exception

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

我应该在for ="...."和id =".."中重复标签文字吗?

  • 有第二种方法的缺点吗?为什么http://www.webstandards.org/决定使用第二种方法
  • 对于屏幕阅读器用户来说,第一种方法是否优于第

第一

<label for="name">Name</label>
      <input id="name" />
Run Code Online (Sandbox Code Playgroud)

第二

<label for="n">Name</label>
      <input id="n" />
Run Code Online (Sandbox Code Playgroud)

css xhtml accessibility web-standards screen-readers

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