小编147*_*7pm的帖子

在Ubuntu 13.04上安装与leiningen的clojure

所以我去了clojure.org/downloads,它说我可以通过leiningen获得clojure.大.我去leiningen.org认为我按照说明操作.它说要获取他们的bash脚本并把它放在你的〜/ bin /中.让它可执行.做到了.那么什么?运行脚本?它没有说,但我做到了.这会创建一个.lein,我认为应该这样做.怎么办?我现在如何安装clojure?这就是clojure.org/downloads所说的:

Modify the dependencies and repositories sections of your Leiningen project.clj file, specifying the version of Clojure that you want:
; under dependencies, select the release of clojure
; (and optionally clojure-contrib) that you want
:dependencies [[org.clojure/clojure
                "1.5.0-alpha5"]]
Run Code Online (Sandbox Code Playgroud)

但我不明白这是什么意思,因为我找不到任何"project.clj"文件.〜/ .lein/self-installs有一个怪物leiningen-2.1.3-standalone.jar文件,可能不希望我黑客攻击它.我现在应该怎么做?我怎么能在将来更好地告知自己?

clojure leiningen

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

多个导入行在 ghci 中产生错误

这是我在 ghci REPL 中尝试过的(堆栈 ghci 8.10.7)

\n
\xce\xbb> :{\n| import Data.List\n| import Data.Ratio\n| :}\nerror: expecting a single import declaration\n
Run Code Online (Sandbox Code Playgroud)\n

为什么我一次不能进行多个导入?顺便说一句,可以这样输入完整的模块定义吗,即

\n
\xce\xbb> :{\n | module STAL where\n | import Data.List\n | import Data.Ratio\n | import Data.Decimal\n | :}\n
Run Code Online (Sandbox Code Playgroud)\n

我的动机是我正在使用 Emacs org-mode 的 babel for Haskell,它仅适用于多行代码,当它被包围时:{ :}.

\n

haskell ghci

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

Chrome 中的“等宽”是什么?

我在 Ubuntu 15.10 上使用 Chrome (47.0.2526.106)。据我所知,“等宽”只是使用“系统”等宽字体的指令(因为不是特定字体)。在 Chrome 设置中,“固定宽度字体”设置为“等宽字体”。然后在我的 Tweek Tool Fonts Monospace 中,我设置了 Courier——但是当一个页面(例如一个简单的错误页面)出现时,我看到的不是 Courier,而是类似于 Ubuntu Mono 的东西,但不完全是这样。Chrome 使用什么字体?它是发送字体,还是在我的系统上使用其他字体?

ubuntu fonts google-chrome monospace

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

组织模式:抽屉的可见导出

我真正想要的是能够导出我的项目的 :PROPERTIES: 并以某种方式覆盖默认的隐藏行为。这显然是不可能的。下一个最好的事情是定义一个“抽屉”。所以 :MYDRAWER: 是我可以定义的东西——它会出现在导出中。我的问题是抽屉不允许好的 key:value 属性子类别。有了属性,我可以做到这一点:

:PROPERTIES:
:Author: Victor Andrade
:Author2:
:Title: My Missions for Revolutionary Bolivia, 1944-1962
:Subtitle:
:Published: 1976
:Read: 2010
:Subject: History
:Area: Bolivia
:Comments:
:END:
Run Code Online (Sandbox Code Playgroud)

但我不能用抽屉做到这一点。尝试在 :MYDRAWER: 和 :END: 之间添加 key:value 类别只会被视为文本。有什么办法可以让我导出像布局这样的漂亮属性吗?再说一次,我也不确定如何处理 org-mode 自定义选项(...group Org Export\Org Export General\Org Export With Drawers。我猜所有抽屉都被导出,除非你设置这个不对吧?

emacs org-mode

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

在 Racket 中设置断点?

将 Emacs/geiser 与 Racket(不是 DrRacket)一起使用,我如何设置断点,然后单步执行代码,在断点处停止?例如,我有这样的代码:

(define (powerset4 lst)
  (if (null? lst)
      '(())
      (append-map (lambda (x)
                    (begin
                      (fprintf (current-output-port) "~s ~s ~s\n" x lst x)
                      (list x (cons (car lst) x))))
                  (powerset4 (cdr lst)))))
Run Code Online (Sandbox Code Playgroud)

我想在begin序列中停下来看看发生了什么以及值是什么。最好不要依赖你们的printf技巧,即也跟踪某些参数。同样,我使用 Emacs 并使用 Geiser。事实上,如果我能用 Guile 或 Chicken(Geiser 语言)做得更好的话,我会改用它们。

debugging scheme racket

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

Scheme和Lisp最佳实践:对于Scheme的递归是,对于Lisp是否为no?

据我所知 - 如果错误我会在这里纠正 - 良好的Scheme实践是做任何需要循环的事情,重复递归,而且溢出不会成为问题,因为尾部递归是内置的.Lisp的,但是,没有保护免受溢出,因此,所有的循环迭代宏(loop,while,等).因此在现实世界的Lisp中,你通常不使用递归,而Scheme只需要它.

如果我的假设是正确的,有没有办法用Lisp"纯粹"而不是冒险溢出?或者这对游戏来说太过游泳以在Lisp中使用递归?我从The Little Schemer回忆起他们如何通过递归给你一个彻底的锻炼.还有一个名为The Little Lisper的早期版本.它是否在Lisp中为您提供相同的递归训练?然后Land of Lisp让我对循环或递归是否是"最佳实践"感到困惑.

我要做的是决定是否在Emacs组织模式中使用Racket,或者只为初学者使用内置的Elisp.我希望学生保持尽可能纯粹的功能,例如,我不想解释递归的新的和困难的话题,然后说"哦,但我们不会使用它......"

scheme elisp common-lisp racket

4
推荐指数
2
解决办法
563
查看次数

Haskell 与 emacs 组织模式:变量不在范围内

在沮丧地徘徊之后,我决定再次在 Emacs 组织模式下尝试 Haskell。我正在使用 Haskell stack-ghci(8.6.3)、Emacs 26.2、org-mode 9.2.3 和intero. 这个代码块

#+begin_src haskell :results raw :session *haskell*
pyth2 :: Int -> [(Int, Int, Int)]
pyth2 n =
  [ (x, y, z)
  | x <- [1 .. n]
  , y <- [x .. n]
  , z <- [y .. n]
  , x ^ 2 + y ^ 2 == z ^ 2
  ]
#+end_src
Run Code Online (Sandbox Code Playgroud)

产生这个结果:

*Main| *Main| *Main| *Main| *Main| 
<interactive>:59:16: error: Variable not in scope: n
<interactive>:60:16: error: …
Run Code Online (Sandbox Code Playgroud)

emacs org-mode haskell-stack

4
推荐指数
2
解决办法
536
查看次数

具有单个构造函数的自引用数据类型不能为 `Show`n

这是来自The Little MLer。我有这个

data Chain = Link Int (Int -> Chain)
Run Code Online (Sandbox Code Playgroud)

和这个

ints :: Int -> Chain
ints n = Link (n+1) ints
Run Code Online (Sandbox Code Playgroud)

我对这里到底发生了什么感到很困惑。这似乎是自身的无限递归,ints左侧只是ints无休止地重复整个过程。书上说

[...] 我们可以认为ints是一个很长的ints. 通过将 的第二个组件应用于第一个,我们从这个序列中的一个元素到下一个元素ints n

我不确定它是如何做到的。但是这会产生一个错误

> ints 0
* No instance for (Show Chain) arising from a use of `print'
:     * In a stmt of an interactive GHCi command: print it
Run Code Online (Sandbox Code Playgroud)

尝试加入deriving Show不会成功

data Chain = Link Int (Int …
Run Code Online (Sandbox Code Playgroud)

haskell types sml self-reference

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

如何用填充指针清除字符串?

这是我在Hyperspec上看到的一个例子:

(setq fstr (make-array '(0) :element-type 'base-char
                             :fill-pointer 0 :adjustable t))
(with-output-to-string (s fstr)
    (format s "here's some output"))
Run Code Online (Sandbox Code Playgroud)

因此,然后fstr持有here's some output问:你怎么可以做一个简单的清除/重置fstr你想重新开始,把东西在它新的情况,即没有串联多到了吗?或者我只需要重做fstr正在设置的顶级表达式?

common-lisp

3
推荐指数
2
解决办法
403
查看次数

Common Lisp dotimes结果很神秘

我懂了

(dotimes (temp-one 10 temp-one))
Run Code Online (Sandbox Code Playgroud)

来自Hyperspec的例子dotimes.运行它会产生答案10.因此,temp-one在第三个参数位置作为返回的"结果",但是当它dotimes从0开始时它是如何变为10 并且只变为9?

>(dotimes (temp-one 10 temp-one) (format t "~3d " temp-one))
  0   1   2   3   4   5   6   7   8   9 
10
Run Code Online (Sandbox Code Playgroud)

关于第三个参数,我在这里缺少什么?

loops common-lisp

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