为了文化和智力的丰富,我决定学习一些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) 我有一个快速的问题.我有一个存储类实例的2D数组.基于先前在程序中读取的文本文件,为数组的元素分配特定的类.由于我不知道没有在文件中查找哪个类存储在特定元素中,我可以引用该索引中不存在的字段(指的是当temp的实例存储在该索引中时的外观).我已经想出了一种测试方法,但它很长,需要第二个矩阵.是否有一个函数来测试类中字段的存在?
class temp():
name = "default"
class temp1():
appearance = "@"
Run Code Online (Sandbox Code Playgroud) 我已经numpy.histogram()在一大堆数据集的子集上运行了.我想将计算与图形输出分开,所以我不想调用matplotlib.pyplot.hist()数据本身.
原则上,这两个函数都采用相同的输入:原始数据本身,在分箱之前.该numpy版本仅返回nbin+1仓的边缘和nbin频率,而matplotlib版本的推移,使情节本身.
那么有没有一种简单的方法从numpy.histogram()输出本身生成直方图,而无需重做计算(并且必须保存输入)?
要清楚,numpy.histogram()输出是箱的nbin+1箱边缘列表nbin; 没有matplotlib例行程序将这些作为输入.
我有以下字典:
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次密钥查找即可维护上述内容.有没有更好的方法来处理在一个非常大的字典中检查大量的键?
我有几台 Mac,我在上面克隆了相当数量的 git(主要是 GitHub)存储库。每个 Mac 都有许多 iCloud 驱动器同步目录(实际上我已经全力以赴,正在同步Desktop和Documents)。
我试图克隆到 iCloud 同步目录。但是,我在这方面遇到了很多问题。似乎很容易陷入 iCloud(而不是 git)变得如此困惑以至于一台机器有效停止同步的情况,即使是与克隆目录无关的文件,即使我小心地重新同步两个克隆中的每一个到完全相同的状态。我不知道问题是.git/在实际 repo 文件的版本之间存在竞争条件还是类似竞争条件的问题。
我尝试在 brctl 下使用 Apple 的各种 iCloud 日志记录工具,但这通常没有帮助。
有没有其他人看过这个或类似的东西?
(这与这个问题有些不同,这个问题似乎主要关心带有 iCloud 驱动器的单个 Mac,我认为在这种情况下的用户不会看到与我相同的问题。)
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 版本中一样。
我刚刚从移动tcsh到bash和使用我特别想念目录缩短提示选项%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) 我需要一个代码的帮助,我想在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在这里不起作用而且没有调用相同的函数,所以它更像是我需要的真正的开关案例,也许我必须考虑其他模式.
我在最新版本的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,这似乎有效.这样安全吗?有什么缺点吗?(我不需要分发这些构建,只需在本地使用它们吗?)
我有一个一n维的 numpy 数组(n原则上是未知的,但实际上它是一个很小的数字,通常n<=3)。我想对m每个方向的每个条目进行二次采样。所以对于二维数组,这将是
arr[::m, ::m]
Run Code Online (Sandbox Code Playgroud)
有没有办法将其概括为任意的n?(在实践中,我可以只检查值并使用上述的不同版本,但我怀疑有更优雅的方法)。
我想知道是否有办法在被调用的方法中捕获异常.
例:
def foo(value):
print value
foo(x)
Run Code Online (Sandbox Code Playgroud)
这将抛出NameError异常,因为未声明x.我想在foo方法中捕获这个NameError异常.有办法吗?
第一
<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)