小编dno*_*len的帖子

如何调试ClojureScript

我为这个看似愚蠢的问题道歉,但我现在已经开始使用ClojureScript几周了,我无法弄清楚这个简单的问题:

我如何调试ClojureScript?

所以这是问题所在:

  1. 我写了*.cjs文件
  2. 我运行cljsc/build ...
  3. 我加载了我的网页.
  4. 发生了一件坏事.
  5. 我打开了firefox控制台.
  6. 我在生成的 js中得到一行,我发现这是不可理解的,我不知道它来自哪个原始cljs文件行.

我的问题:

开发ClojureScript应用程序的正确方法是什么?

PS我看过ClojureScriptOne - 我不喜欢的是它将所有技术同时捆绑在一起; 而且我更愿意在将它们连在一起之前了解如何单独使用每个单独的部分.

我对ring + mustache + compojure很满意,[主要是因为我可以使用我的标准Clojure调试技术]但是ClojureScript是另一个野兽.

更新:自从第一次提出这个问题以来,情况发生了很大的变化.这些天调试ClojureScript应用程序的正确方法是启用源映射 - http://github.com/clojure/clojurescript/wiki/Source-maps

clojure clojurescript

28
推荐指数
5
解决办法
6156
查看次数

在没有削减的情况下解析Prolog?

我发现这个很好的片段用于解析Prolog中的lisp(从这里开始):

ws --> [W], { code_type(W, space) }, ws.
ws --> [].

parse(String, Expr) :- phrase(expressions(Expr), String).

expressions([E|Es]) -->
    ws, expression(E), ws,
    !, % single solution: longest input match
    expressions(Es).
expressions([]) --> [].

% A number N is represented as n(N), a symbol S as s(S).

expression(s(A))         --> symbol(Cs), { atom_codes(A, Cs) }.
expression(n(N))         --> number(Cs), { number_codes(N, Cs) }.
expression(List)         --> "(", expressions(List), ")".
expression([s(quote),Q]) --> "'", expression(Q).

number([D|Ds]) --> digit(D), number(Ds).
number([D])    --> digit(D).

digit(D) --> …
Run Code Online (Sandbox Code Playgroud)

lisp parsing prolog dcg prolog-cut

19
推荐指数
2
解决办法
1108
查看次数

在Emacs中保存窗口配置

我想知道是否有办法在emacs会话中保存窗口配置.我知道桌面保存非常适合保留缓冲区和诸如此类的东西,并且emacs手册演示了如何将窗口配置存储到寄存器中,但这不会在会话中持续存在.

当然,这似乎并不太难以实现自己......

emacs dot-emacs

18
推荐指数
2
解决办法
6217
查看次数

使用couchdb-python进行多个CouchDB文档获取

如何从CouchDB中获取多个文档,特别是使用couchdb-python?

python couchdb

12
推荐指数
2
解决办法
5786
查看次数

部分字典/记录统一?

据我所知,一些Prologs支持类似字典的关联数据结构.对于这样做的实现,它们是否支持部分统一的概念与另一个实际上不包含所有键的结构?

例如,在core.logic/miniKanren的语法中:

(run* [q]
  (== {:foo 1 :bar 2} (partial-map :foo q)))
Run Code Online (Sandbox Code Playgroud)

这将返回单个结果,其中q绑定为1.

Prologs会给这个操作或这个部分结构起一个名字吗?

prolog minikanren clojure-core.logic

12
推荐指数
2
解决办法
862
查看次数

你会如何在Ruby和/或Haskell中编写这个Clojure片段?

我正在研究一个Rails模板,并试图编写一些代码,允许我填充一个表或多列ul标签"从上到下"和"从左到右"跨越我指定的许多列.我刚刚掌握了Ruby,所以我无法理解这一点.我也对这个有用的片段的惯用Haskell版本感到好奇.对Clojure版本的改进表示赞赏:

(defn table [xs & {:keys [cols direction]
                   :or   {cols 1 direction 'right}}]
  (into []
        (condp = direction
          'down (let [c (count xs)
                      q (int (/ c cols))
                      n (if (> (mod c q) 0) (inc q) q)]
                  (apply map vector (partition n n (repeat nil) xs)))
          'right (map vec (partition cols cols (repeat nil) xs))))) 
Run Code Online (Sandbox Code Playgroud)

有了这段代码,我就可以做到以下几点:

(table (range 10) :cols 3)
Run Code Online (Sandbox Code Playgroud)

打印出来的情况如下:

0    1    2 
3    4    5 
6    7    8
9
Run Code Online (Sandbox Code Playgroud)

更棘手的一个:

(table (range 10) :cols 3 :direction …
Run Code Online (Sandbox Code Playgroud)

ruby haskell language-comparisons clojure

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

有没有更好的方法在Python中编写此URL操作?

我很好奇是否有更简单的方法从网址中删除特定参数.我想出的是以下内容.这看起来有点冗长.使用的图书馆或更加pythonic版本赞赏.

parsed = urlparse(url)
if parsed.query != "":
    params = dict([s.split("=") for s in parsed.query.split("&")])
    if params.get("page"):
        del params["page"]
    url = urlunparse((parsed.scheme,
                      None,
                      parsed.path,
                      None,
                      urlencode(params.items()),
                      parsed.fragment,))
    parsed = urlparse(url)
Run Code Online (Sandbox Code Playgroud)

python url parsing

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

Prolog DCG的多项功能?

根据我的理解,在Prolog中,您可以在解析时捕获功能:

 foo(feature(X)) --> [X], bar.
Run Code Online (Sandbox Code Playgroud)

在设计DCG时这是常见的吗?

 foo(featureA(X), featureB(Y)) --> [X], [Y], bar.
Run Code Online (Sandbox Code Playgroud)

parsing prolog dcg

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

core.logic中的distincto与fd/distinct

fd/distinct在元素将在有限域而不是distincto?的情况下使用的优点是什么?

以下全部返回([0 1] [1 0]).

;;; With distincto
(run* [q]
  (fresh [x y]
    (fd/in x y (fd/interval 1))
      (distincto [x y])
      (== q [x y])))

;;; With fd/distinct
(run* [q]
  (fresh [x y]
    (fd/in x y (fd/interval 1))
      (fd/distinct [x y])
      (== q [x y])))

;;; Without fd at all. 
(let [interval [0 1]]
  (run* [q]
    (fresh [x y]
      (membero x interval)
      (membero y interval)
      (distincto [x y])
      (== q [x y]))))
Run Code Online (Sandbox Code Playgroud)

值得注意的是,虽然看起来你可能会distincto在你可能使用的任何地方使用 …

clojure clojure-core.logic

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

Common Lisp的初学者:动态定义包的宏问题

仍在努力了解宏的最佳实践.我正在尝试编写一个动态定义包的宏.

(defmacro def-dynamic-package (name)
  `(defpackage ,(intern (string-upcase name) "KEYWORD")
     (:use :common-lisp)))
Run Code Online (Sandbox Code Playgroud)

这适用于以下表达式:

(def-dynamic-package "helloworld")
Run Code Online (Sandbox Code Playgroud)

但对于这样的事情惨遭失败:

(defun make-package-from-path (path)
  (def-dynamic-package (pathname-name path)))
Run Code Online (Sandbox Code Playgroud)

要么

(defun make-package-from-path (path)
  (let ((filename (pathname-path)))
     (def-dynamic-package filename)))
Run Code Online (Sandbox Code Playgroud)

我理解大多数基本宏是如何工作的,但是如何实现这个宏却让我感到惊讶.

lisp macros common-lisp

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

为什么core.logic的输出会重复相同的值?

我在core.logic中试过这个

(require [clojure.core.logic :as l])

(l/run* [q]
  (l/fresh [a b c]
    (l/membero a [1])
    (l/membero b [4 5])
    (l/membero c [1 2])
    (l/== q [a b])))

期待结果 [1 4] [1 5]

但它确实如此 [1 4] [1 4] [1 5] [1 5]

然后我开始玩它并发现:

(require [clojure.core.logic :as l])

(l/run* [q]
  (l/fresh [a b c]
    (l/membero a [1])
    (l/membero b [4 5])
    (l/membero c [1 1 1 1 1 1 1 1])
    (l/== q [a b])))
 ;; => ([1 4] [1 4] [1 4] …
Run Code Online (Sandbox Code Playgroud)

clojure minikanren clojure-core.logic

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

为Common Lisp项目自动创建ASDF文件

有没有图书馆可以做到这一点?玩Common Lisp似乎是降低新手入门门槛最有用的事情之一.ASDF似乎主要用于部署,而不是用于快速原型设计和开发.在comp.lang.lisp上的线程之后,似乎人们都认为CL的包系统功能强大,但缺乏像Python的死简单模块系统那样容易.从某种意义上讲,它是针对功率而不是可用性而设计的.

很高兴知道我是不是错了.如果我是对的,我很惊讶没有人试图在ASDF之上构建类似Python模块的系统.

lisp common-lisp asdf

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

Python UTF8字符串混乱

一直在敲我的脑袋一段时间,我读了一堆文章,问题并没有更明确.我有一堆字符串存储在我的数据库中,想象如下:

x = '\xd0\xa4'
y = '\x92'
Run Code Online (Sandbox Code Playgroud)

在Python shell中,我得到以下内容:

print x
?
print y
?
Run Code Online (Sandbox Code Playgroud)

这正是我想要看到的.然而,有以下内容:

print unicode(x, 'utf8')
?
Run Code Online (Sandbox Code Playgroud)

但不是这个:

unicode(y, 'utf8')
UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 0: unexpected code byte
Run Code Online (Sandbox Code Playgroud)

我的感觉是我们的字符串被破坏了,因为Django试图将它们转换为unicode,但我只是在猜测这一点.任何见解或变通方法都表示赞赏.

更新:当我查看包含'\ x92'值的行的数据库时,我将此字符视为'.撇号.我正在使用Unicode UTF-8编码查看数据库的内容.

python django unicode

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