小编Koz*_*oss的帖子

Node.js尾调用优化:可能与否?

我喜欢的JavaScript到目前为止,并决定使用Node.js的为我的发动机的部分原因是因为这个,它声称的Node.js提供TCO.但是,当我尝试使用Node.js运行此代码(显然是尾部调用)时,会导致堆栈溢出:

function foo(x) {
    if (x == 1) {
        return 1;
    }
    else {
        return foo(x-1);
    }
}

foo(100000);
Run Code Online (Sandbox Code Playgroud)

现在,我做了一些挖掘,我找到了这个.在这里,似乎我应该这样写:

function* foo(x) {
    if (x == 1) {
        return 1;
    }
    else {
        yield foo(x-1);
    }
}

foo(100000);
Run Code Online (Sandbox Code Playgroud)

但是,这给了我语法错误.我试过它的各种排列,但在所有的情况下,Node.js的似乎不满的东西.

基本上,我想知道以下内容:

  1. Node.js是否执行TCO?
  2. 这个神奇的yield东西在Node.js中如何运作?

javascript tail-call-optimization node.js

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

使用dub构建文档

我如何使用dub从我的源文件制作DDoc?dub中似乎没有默认命令来执行此操作,我真的希望能够自动执行此过程.

documentation d documentation-generation ddoc dub

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

对SBCL中的``ql:quickload``和可执行脚本感到困惑

我一直在尝试在我的可执行脚本中使用Quicklisp包.一个(平凡的)工作示例是:

#!/usr/bin/sbcl --script

(eval-when (:compile-toplevel :load-toplevel :execute)
  (ql:quickload "lisp-unit")) ;as explained by another question

(defpackage :test
  (:use :cl :lisp-unit))

(format t "This is a test.")
Run Code Online (Sandbox Code Playgroud)

chmod使用此代码(调用test.lisp)的文件后,我尝试执行它.但是,我收到以下错误消息:

Unhandled SB-C::INPUT-ERROR-IN-LOAD in thread #<SB-THREAD:THREAD
                                            "main thread" RUNNING
                                             {1002C16923}>:
  READ error during LOAD:

    Package QL does not exist.

      Line: 4, Column: 15, File-Position: 95

      Stream: #<SB-SYS:FD-STREAM
            for "file /home/koz/Documents/Programming/CL/trees/test.lisp"
            {1002C19A93}>

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {1002C16923}>
0: ((LAMBDA NIL :IN SB-DEBUG::FUNCALL-WITH-DEBUG-IO-SYNTAX))
1: (SB-IMPL::CALL-WITH-SANE-IO-SYNTAX #<CLOSURE (LAMBDA NIL :IN SB-DEBUG::FUNCALL-WITH-DEBUG-IO-SYNTAX) {1002C2498B}>) …
Run Code Online (Sandbox Code Playgroud)

sbcl common-lisp quicklisp

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

使用Emacs作为服务器并且只打开一个窗口,应该最大化

我想在守护进程模式下运行我的Emacs,然后emacsclient用来实际显示东西.但是,如果我跑emacsclient filename,它会出现在终端,这不是我想要的; 我不得不把它传给它-c.

但是,该选项总是创建一个新帧,这不是我想要的 - 我宁愿只有一个帧,并且如果它已经存在,则在同一帧中的新缓冲区中打开东西; 否则,它应该让我成为一个新的框架.但是,我不知道该怎么做.

另外,我希望最大化一个帧,我通常用-mm选项实现我的起始Emacs ; 我如何确保emacsclient最大化的框架?

emacs emacsclient

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

D:Const正确性 - 我做错了什么?

我目前正在实现基于二叉树的数据结构.作为其中的一部分,我(当前公开,为了更容易测试)实例变量,leftright作为Node创建我的结构中使用的每个对象的一部分.我希望能够快速访问的一件事是sub,使用此函数完成:

@property Node sub() 
    in {
        assert(!isLeaf);
    }
    body {
        return (val != left.val) ? left : right;
    }
Run Code Online (Sandbox Code Playgroud)

这指的所有内容都是公开的.现在,我尝试在契约中使用此属性函数(特别是out块,函数绑定的结果result).但是,当我这样做时,编译器抱怨我正在使用const result对象调用一个可变方法.当我改变的签名sub@property const Node sub(),但是,我得到这个编译器错误,而不是:

Error: cannot implicitly convert expression (this.val != this.left.val ? this.left : this.right) of type const(Node) to tournament2.Node

我在这里错过了什么?我该如何解决这个问题?

d const properties

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

SBCL前瞻性声明:可能吗?

我在SBCL中编写了一些代码,当我将文件加载到REPL中时,我的函数的顺序一直会导致出现以下类型的警告:

;caught STYLE-WARNING:
    undefined function: FOO
Run Code Online (Sandbox Code Playgroud)

FOO函数的符号在哪里.这纯粹是因为他们是如何在我的文件排序,作为函数FOO 定义,只是没有抛出这一警告的代码部分之前.

现在,在Clojure中,我熟悉的是Lisp,我有一个declare表单,它允许我做出前瞻性声明以避免这种问题.SBCL/Common Lisp总体上有类似的东西吗?

sbcl forward-declaration

6
推荐指数
2
解决办法
784
查看次数

在未装箱的Vector中存储枚举类型

假设我有这样的事情:

data Colour = Red | Blue | Green
   deriving (Eq, Ord, Enum, Bounded, Read, Show)
Run Code Online (Sandbox Code Playgroud)

我希望有一个未装箱VectorColours.我显然不能直接这样做(因为Colour它不是一个实例Unbox),但我也不知道我将如何编写Unbox实例Colour.文档Unbox似乎没有说明你是如何创建它的一个实例(或至少,不是我理解的方式).

haskell

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

使 GNU 缩进正确处理结构文字

当我尝试在这段代码上使用 GNU 缩进时:

tree_node_s *t = GC_MALLOC_ATOMIC (sizeof (tree_node_s));
*t = (tree_node_s){.val = n,.h = 0};
Run Code Online (Sandbox Code Playgroud)

我明白了:

tree_node_s *t = GC_MALLOC_ATOMIC (sizeof (tree_node_s));
*t = (tree_node_s)
  {
  .val = n,.h = 0};
Run Code Online (Sandbox Code Playgroud)

显然,这看起来非常糟糕,而且显然不是一个结构体文字。我仅将默认选项传递给 GNU 缩进(意味着 GNU 风格)。我是否可以传递一个选项,让它以一种不会看起来那么可怕的方式处理这种情况?

c gnu indentation

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

a2x无法编译我的联机帮助页

我有一个Asciidoc文档foo.1.txt,并按照这里的说明,我尝试编译它a2x如下:

a2x --doctype manpage --format manpage foo.1.txt
Run Code Online (Sandbox Code Playgroud)

在此之后,我收到以下错误:

a2x: ERROR: "/usr/bin/asciidoc.py" --backend docbook -a 
"a2x-format=manpage"  --doctype manpage  --out-file 
"/home/koz/Documents/foo.1.xml" 
"/home/koz/Documents/foo.1.txt" returned non-zero exit status 1
Run Code Online (Sandbox Code Playgroud)

我不确定发生了什么,或者我怎么能诊断出什么是错的.XML文件在同一文件夹(标题为产生foo.1.xml)作为这个过程的一部分.所有帮助表示赞赏.

编辑:基于--verbose标志的使用,问题似乎在这一部分:

COPYING
----------
 Copyright \(C) 2015, Koz Ross <koz.ross@runbox.com>. Free use of this software
is granted under the terms of the GNU General Public License (GPL) version 3, or
any later version.
Run Code Online (Sandbox Code Playgroud)

投诉是:[blockdef-listing] missing closing delimiter就行了COPYING.

manpage asciidoc

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

我应该使用镜头中的什么来按索引构建只读吸气剂?

我有一个内部细节被隐藏的类型。我想提供某种镜头,可以在特定索引处读取所述类型的元素,但修改它们。我的类型的实例Ixed似乎没有执行我想要的操作,因为它明确允许修改(尽管不允许插入或删除)。如果我想允许只读索引,我不确定我使用什么。

haskell haskell-lens

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