小编Ric*_*rdo的帖子

当与一般条款一起使用时,在Erlang中==和=:=之间有什么区别?

除了=:=防止不需要的整数转换的事实:

1> 1=:=1.0.
false
Run Code Online (Sandbox Code Playgroud)

=:=一般使用术语有什么好处?

更好的性能?

erlang

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

从Vim脚本向缓冲区添加消息

从Vim脚本中追加字符串变量内容的最佳方法是什么?

vim scripting

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

Python中的子类化浮点类型无法捕获__init __()中的异常

在Python 2.5上,我需要使用带有修改__str__()方法的浮点数.此外,我需要知道构造函数何时失败.

为什么我无法捕获从中提出的异常float.__init__()

查询派生浮点对象的数值的最佳方法是什么?在我的代码我正在使用float(self).

class My_Number(float):
    def __init__(self, float_string):
        try:
            super(My_Number, self).__init__(float_string)
        except (TypeError, ValueError):
            raise My_Error(float_string)

    def __str__(self):
        if int(float(self)) == float(self):
            return str(int(float(self)))
        else:
            return str(round(float(self), 2))


>>> n = My_Number('0.54353')
>>> print n
0.54

>>> n = My_Number('5.0')
>>> print n
5

>>> n = My_Number('foo')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for float(): foo
Run Code Online (Sandbox Code Playgroud)

python exception-handling

10
推荐指数
2
解决办法
1866
查看次数

Prolog中的广度优先

在Prolog中使用广度优先于默认深度优先搜索方案的一般思路是什么?

没有采取无限的分支?

在Prolog中有没有使用广度优先的一般方法?我一直在谷歌搜索,我没有找到太多有用的新手信息.

breadth-first-search prolog logic-programming

9
推荐指数
2
解决办法
9484
查看次数

如何检测使用inotify挂载目录的时间?

我正在使用Linux Inotify来检测程序中的FS事件.

如何在受监控目录上安装设备时如何通知我?

c linux kernel inotify

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

如何在Haskell中轮询文件,套接字或句柄以使其可读/可写?

我怎么能从Haskell看几个文件/套接字并等待它们变得可读/可写?

在Haskell中有没有像select/epoll/...这样的东西?或者我被迫为每个文件/套接字生成一个线程并始终使用该线程中的阻塞资源?

haskell

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

处理gen_server状态的清理

我有一个gen_server运行,它必须清理它的状态,无论它正常停止或意外崩溃.清理主要包括删除一些文件.

此时,当gen_server崩溃或正常停止时,清理完成terminate/2.

terminate/2如果gen_server撞车事故,有什么理由不被召唤?

如果模具意外死亡,应该是监控gen_server等待清理的任何其他进程gen_server吗?

所以,代码是这样的:

terminate(normal, State) ->
    % Invoked when the process stops
    % Clean up the mess
terminate(Error, State) ->
    % Invoked when the process crashes
    % Clean up the mess
Run Code Online (Sandbox Code Playgroud)

编辑:我在官方邮件列表中发现了这封电子邮件,它正在谈论同样的事情:

http://groups.google.com/group/erlang-programming/browse_thread/thread/9a1ba2d974775ce8

正如亚当在下面所说,如果我们想避免陷入存在gen_server,我们可以使用不同的方法.

但是如果我们捕获存在,terminate/2似乎是一个安全的地方进行清理,因为它总是会被调用.此外,我们必须正确处理'EXIT'发送到terminate/2handle_call/3试图在工人和主管之间正确传播错误的时间.

erlang erlang-otp

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

使用只有一个元组值的变体类型构造函数

# type foo = Foo of int * int
# let t = (1, 2)
# Foo t
Error: The constructor Foo expects 2 argument(s),
   but is applied here to 1 argument(s)
Run Code Online (Sandbox Code Playgroud)

它是如何,我必须这样做Foo (1, 2),以避免错误甚至牛逼有合适的类型?

constructor ocaml

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

Prolog运算符优先级和规则匹配

我在我的prolog解释器中加载了下两个事实:

foo(U+V,1).
foo(U*V,2).
Run Code Online (Sandbox Code Playgroud)

现在我尝试使用该结果的下一个查询:

foo(x*x+x,R).  -->  R = 1
foo(x+x*x,R).  -->  R = 1
foo(x*x*x,R).  -->  R = 2
Run Code Online (Sandbox Code Playgroud)

现在我尝试下一个查询:

foo(x*x-x,R).  -->  no
Run Code Online (Sandbox Code Playgroud)

据我了解,这可以通过运算符优先级如何构建树表达式来解释:

x+x*x  -->  +           so it matches with  -->  +
           / \                                  / \
          x   *                                U   V
             / \
            x   x

x-x*x  -->  -           DOES NOT matches any fact.
           / \                             
          x   *                                
             / \
            x   x
Run Code Online (Sandbox Code Playgroud)

这个解释是否正确?

prolog operator-precedence

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

OCaml:当stdin重定向时,Unix.getlogin出现意外异常

我在这个简单的代码中找到了下一个问题:

let () =
    print_endline "Hello";
    print_endline (Unix.getlogin ())
Run Code Online (Sandbox Code Playgroud)

在正常情况下运行,./a.out给出:

Hello
ricardo
Run Code Online (Sandbox Code Playgroud)

但是运行./a.out </dev/null会使Unix.getlogin失败:

Hello
Fatal error: exception Unix.Unix_error(20, "getlogin", "")
Run Code Online (Sandbox Code Playgroud)

知道为什么会这样吗?

unix ocaml

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

通过倒置模式突出显示Vim中的匹配

如何使用:match命令在Vim中突出显示与给定模式不匹配的文本?

所以,我希望与之相反:

:match myGroup /foo/
Run Code Online (Sandbox Code Playgroud)

vim

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

OCaml的Lazy.lazy_from_val的目的是什么?

Lazy.lazy_from_val函数适用于特殊情况的状态文档:

val lazy_from_val : 'a -> 'a t
  lazy_from_val v returns an already-forced suspension of v This is for special purposes only and should not be confused with lazy (v).
Run Code Online (Sandbox Code Playgroud)

他们在谈论哪些案例?

如果我从以下值创建一对暂停计算:

let l1 = lazy 123
let l2 = Lazy.lazy_from_val 123
Run Code Online (Sandbox Code Playgroud)

这两者有什么区别?因为Lazy.lazy_is_val l1并且Lazy.lazy_is_val l2两者都返回真实的说价值已经被迫!

ocaml lazy-evaluation

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