小编Ray*_*yne的帖子

Clojure读线功能问题

我正在尝试在我的Clojure程序中获取控制台输入,但是当它到达程序的那一部分时它给了我这个错误.

Exception in thread "main" java.lang.ClassCastException:
clojure.lang.LineNumberingPushbackReader cannot be cast to java.io.BufferedReader
Run Code Online (Sandbox Code Playgroud)

'read'功能有效,但它不是我需要的.这是我正在使用的代码.

(defn prompt-read [prompt]
  (print (format "%s: " prompt))
  (flush )
  (read-line))
Run Code Online (Sandbox Code Playgroud)

编辑:

这显然只是我正在使用的版本.它是当前的Programming Clojure示例代码中包含的版本,我将测试当前的发行版本并查看是否存在问题.

clojure

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

如何在github存储库中编辑初始提交?

我正在研究一个我分叉的存储库,其中作者采用了脏路径,并在初始提交中将所有依赖项填充到lib /目录中.通常,如果它不是初始提交,我只会做一个交互式rebase并删除整个提交(如果这就是他所做的全部).但是,我不知道如何编辑/删除初始提交.有没有办法可以编辑初始提交并删除lib目录而不触及其余部分?

编辑

我在这里偶然发现了答案:我可以从Git仓库中删除最初的提交吗?在选定的答案中.这就是我没有更彻底地搜索的结果.

git git-rebase

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

什么时候应该在Clojure中使用临时重新绑定-a-special-var成语?

我注意到一些像clojure-twitter这样的库使用特殊的vars(那些用于动态绑定的用星号包围)用于oauth身份验证.您将身份验证保存在var中,然后使用(with-oauth myauth ..).我认为这是解决此类问题的一个非常好的解决方案,因为您可以为应用程序的每个用户重新绑定auth var.

我在一个我写过的电子邮件客户端中采取了类似的路线.我有一个特殊的var命名会话,我使用当前用户的会话和用户信息绑定到一个地图,并且有各种重要的函数使用来自该var的信息.我写了一个宏,with-session暂时在传递给with-session的一组表单的上下文中重新绑定它.事实证明这是一个非常干净的解决方案(对我来说).

所以,我的问题是这样的:我是否'做'它'?这是一个糟糕的设计决定,还是这个特殊变量的预期用法之一?

clojure dynamic-rebinding

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

如何在Clojure中懒洋洋地阅读网页

我和一位朋友最近在我的Clojure IRC机器人中实现了链接抓取.当它看到一个链接时,它会淹没页面并从页面中抓取标题.问题是它必须啜饮整个页面才能获取链接.

如何在第一个页面之前懒洋洋地阅读页面 </title>?

networking clojure lazy-evaluation

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

Clojure GUI计算器." - "始终返回0,"/"始终返回1

我很清楚这段代码太可怕了.我刚刚做到了所以我可以尝试不同的Swing东西.这是一个有趣的问题.这创建了4个按钮,用于添加,减去,分割和相乘.乘法和加法完美地工作,完全没有问题,但是当用户试图减去它时总是返回0.当用户试图除以它时,总是返回1或1.0,具体取决于输入.我无法弄清楚.这是代码:

(ns rayne.main
  (:gen-class)
  (:import (javax.swing JFrame JTextField JButton JOptionPane)
           (java.awt.event ActionListener)
           (java.awt GridLayout)))

(def numbers (ref []))
(def times-clicked (ref 0))

(defn calc [nseq op]
  (let [n1 (first nseq)
        n2 (last nseq)]
  (cond
    (= op "+") (+ n1 n2)
    (= op "*") (* n1 n2)
    (= op "-") (- n2 n1)
    (= op "/") (/ n1 n2))))

(defn add-op-button [op text button]
  (.addActionListener button
    (proxy [ActionListener] []
      (actionPerformed [e]
      (dosync
       (ref-set times-clicked (inc @times-clicked))
       (if (= @times-clicked 2)
         (do …
Run Code Online (Sandbox Code Playgroud)

java swing clojure

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

Doseq每y计算1 x.有没有什么方法可以让它在1年内评估1 x等等在Clojure中?

我不太确定如何说出这个帖子的名字,所以如果你能澄清它,请这样做.

我的示例代码是这样的:

(doseq [x [1 2 3] y [3 2 1]] (println (str x y)))
Run Code Online (Sandbox Code Playgroud)

该代码的输出是:


13
12
11
23
22
21
33
32
31
nil
Run Code Online (Sandbox Code Playgroud)

我理解列表理解和doseq都是这样评价的.有没有另一种方法可以做到这一点,所以不是x的1个元素用于y的每个元素,依此类推,x的1个元素与y的1个元素一起使用,依此类推,因此输出将是:


13
22
31
Run Code Online (Sandbox Code Playgroud)

对不起,如果我没有说明这一点,我似乎无法正确地说出来.

编辑:我认为你可以在Haskell中使用列表推导和语言扩展来做到这一点.ParallelListComps之类的东西.

clojure

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

如何在较大的div内垂直和水平居中div?

如何在另一个<div>中水平居中<div>?我设法从接受的答案中使用样式水平居中.我怎样才能将它垂直居中?内部div的高度未知.

html css

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

如何使用Java的反射API找出方法是否是静态的?

如果我不知道sleepjava.lang.Thread 上的方法是静态的,我怎么能找到?

java reflection

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

有人可以向我解释这些Haskell功能吗?

我过去曾经涉足过Haskell,最近又认真地回到了它,我正在阅读真实的世界.他们已经发光的一些例子,我还没有理解.在这一个:

myLength []     = 0
myLength (x:xs) = 1 + myLength (xs)
Run Code Online (Sandbox Code Playgroud)

我不知道这是如何工作的,真正添加的是什么?递归如何返回可以添加的内容?我不明白.

在这里我们有这个:

splitLines [] = []
splitLines cs =
       let (pre, suf) = break isLineTerminator cs
       in  pre : case suf of 
                   ('\r':'\n':rest) -> splitLines rest
                   ('\r':rest)      -> splitLines rest
                   ('\n':rest)      -> splitLines rest
                   _                -> []

isLineTerminator c = c == '\r' || c == '\n'
Run Code Online (Sandbox Code Playgroud)

这是如何工作的,什么是真正的附加呢?我没有看到case表达式的结果是如何预先连接到的.也许我只需要有人详细解释这些功能的评估.我必须遗漏一些非常重要的东西.

提前致谢!

编辑:我知道,这是一个复制粘贴失败.抱歉.

编辑2:似乎我的困惑在于这些功能实际/返回/我现在已经解决了.谢谢你们的答案,终于点击了!我很感激!

recursion haskell functional-programming lazy-evaluation

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

当您在Clojure中扩展Java类并定义与该类中的方法同名的方法时,会发生什么?

我一直在阅读Programming Clojure,我在理解Stuarts主Java Interop示例时遇到了一些麻烦.他扩展了DefaultHandler,并创建了一个startElement方法,然后将该处理程序传递给XML解析器.我不明白的是,到底发生了什么.他的startElement实现是否覆盖了DefaultHandler中定义的实现?我糊涂了.我没有使用Java的经验,也没有面向对象的经验.

谢谢!

clojure java-interop

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

RUBY:数组和并行赋值的奇怪问题

好吧,我一直在搞乱Ruby中不同的排序算法; 主要是变化快速排序.我有一个双枢轴快速排序的版本,可以选择随机枢轴.因此,当随机枢轴落在阵列的开始或结束时,奇怪的事情开始发生.我做了一些调查,并将其归结为这种奇怪的现象.

//irb output             #using Ruby 1.8.6 and irb 0.9.5
irb> foo = [1,2,3,4]     #create my array, very generic for an example
=> [1, 2, 3, 4]
irb> foo[0],foo[1],foo[2],foo[3] = foo[1],foo[0],foo[3],foo[2]
=> [2, 1, 4, 3]          #array swaps inside values with edge values fine.
irb> foo
=> [2, 1, 4, 3]          #values have changed correctly.
irb> foo = [1,2,3,4]     #reset values
=> [1, 2, 3, 4]          #next I am going to try and swap the element foo[0] with itself
irb> …
Run Code Online (Sandbox Code Playgroud)

ruby

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