小编Gar*_*don的帖子

我可以有条件地编译clojure/clojurescript吗?

有没有办法在clojure/clojurescript中有条件地编译一些东西,这取决于你是否正在编译Javascript的JVM字节码?

我正在用ClojureScript编写一个小游戏,但是希望保持大部分代码平台中立,所以我可以在某个时候转换为Clojure.我还发现在Clojure中编译更适合在我的代码中查找错误.

通过使用cljsbuild使用交叉转换为cljs的clj文件目录,我可以正常工作.

我来的地方是试图在我的clj文件中使用core.async.这是cljs所需要的:

(ns gaz.system
    (:require-macros [cljs.core.async.macros :refer [go]])
    (:require 
        [cljs.core.async]))
Run Code Online (Sandbox Code Playgroud)

虽然这是clj工作所必需的

(ns gaz.system
    (:require
        [core.async ]))
Run Code Online (Sandbox Code Playgroud)

我希望有一个带有某种形式条件要求的文件,具体取决于它是如何编译的.这有可能吗?精读

clojure clojurescript

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

如何在clojure中创建无限重复序列?

我想采用一个序列或向量,并创建一个无限的,循环的,懒惰的版本.这是我试过的:

(def test-seq '(1 2 3))
(take 5 (repeat test-seq))
Run Code Online (Sandbox Code Playgroud)

我得到了

((1 2 3) (1 2 3) (1 2 3) (1 2 3) (1 2 3))
Run Code Online (Sandbox Code Playgroud)

当我想要的是

(1 2 3 1 2)
Run Code Online (Sandbox Code Playgroud)

我知道这很有效

(take 5 (flatten (repeat test-seq)))
Run Code Online (Sandbox Code Playgroud)

但这似乎有点令人不满和松弛.我假设重新组织一系列序列很昂贵,但我可能错了:)

clojure sequence

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

无法从 Node.js 连接到 Telnet 服务器

我有一个嵌入在 C++ 应用程序中的 telnet 服务器,我可以使用 telnet 毫无问题地连接到它。

我想编写一个将连接到我的服务器的节点应用程序,我已经尝试过

var net = require('net');

var port = 6502
var host = '127.0.0.1'

var socket = net.connect(port,host, function() {
    console.log("Sending data");
    socket.write("hello\r\n")

    socket.on("data", function (data) {
        console.log("received data");
        console.log( data.toString() );
        socket.end();
    })
})

socket.on("error", function(err) {
    console.log("Error");
    console.log(err);
})
Run Code Online (Sandbox Code Playgroud)

不幸的是我得到的是这个

> node test.js
{ [Error: connect ECONNREFUSED]
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect' }
Run Code Online (Sandbox Code Playgroud)

真正奇怪的是,如果我使用节点设置一个简单的回显服务器,一切正常。这是工作的回声服务器代码:

var net = require('net');

var server = net.createServer(function (socket) {
  socket.write('Echo server\r\n');
  socket.pipe(socket);
});

server.listen(6502, '127.0.0.1');
Run Code Online (Sandbox Code Playgroud)

从那我得到 …

networking telnet node.js

5
推荐指数
0
解决办法
3043
查看次数

Haskell Typeclasses:我在这里做错了什么?

Haskell全新并尝试编写解析器.

我已经使用attoparsec成功地将我的输入文件切换成令牌到AST.

我现在想要走AST并从中发出输出.我想我可以通过从类型类派生一些通用例程到Token类,然后在实例中根据Token类型发出代码的需要提供特定函数来实现.

代码可能比我的解释更容易理解.这是我试过的:

class AST a where
  children :: a -> [a]
  prefix :: a -> String
  suffix :: a -> String
  node :: a -> [String]

  children v = []
  prefix v = ""
  suffix v = ""
  node v = [prefix v] ++ (concatMap node $ children v) ++ [suffix v]

data Token =  Line { lnName :: String, lnLines :: Int }
            | LineList { llLines :: [Token] }
            | Init String
            | Main String
            | …
Run Code Online (Sandbox Code Playgroud)

haskell typeclass

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