小编Ral*_*lph的帖子

如何为特定模式设置Emacs填充列?

我想fill-column在Clojure模式下将Emacs 设置为120,但是保留默认值(80).

我怎么能在我的.emacs文件中这样做?

谢谢.

emacs clojure autofill

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

为什么Haskell/GHC不支持记录名称重载

我是Haskell的新手.我注意到Haskell不支持记录名称重载:

-- Records.hs

data Employee = Employee
  { firstName :: String
  , lastName :: String
  , ssn :: String
  } deriving (Show, Eq)

data Manager = Manager
  { firstName :: String
  , lastName :: String
  , ssn :: String
  , subordinates :: [Employee]
  } deriving (Show, Eq)
Run Code Online (Sandbox Code Playgroud)

当我编译这个时,我得到:

[1 of 1] Compiling Main             ( Records.hs, Records.o )

Records.hs:10:5:
    Multiple declarations of `firstName'
    Declared at: Records.hs:4:5
                 Records.hs:10:5

Records.hs:11:5:
    Multiple declarations of `lastName'
    Declared at: Records.hs:5:5
                 Records.hs:11:5

Records.hs:12:5:
    Multiple declarations of `ssn' …
Run Code Online (Sandbox Code Playgroud)

haskell naming record

15
推荐指数
2
解决办法
923
查看次数

Clojure JVM 7/8的改进

Rich Hickey和其他人已经提到Clojure不会从即将推出invokeDynamic的JVM 7或8计划中获得显着改进,但是会看到尾递归的性能提升.

尾递归是否会对其产生影响

(fn [...] (recur ...))
Run Code Online (Sandbox Code Playgroud)

要么

(loop [...] (recur ...))
Run Code Online (Sandbox Code Playgroud)

我不希望它们得到任何更快,因为编译器可能已经生成循环结构.

tail-recursion clojure invokedynamic

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

寻找Webstart Maven插件示例应用程序

我正在寻找使用Webstart Maven插件的完整应用程序的源代码.

有任何想法吗?

maven-2 sample java-web-start maven-webstart-plugin

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

Clojure合并功能

SQL提供了一个函数coalesce(a, b, c, ...),如果它的所有参数都为null,则返回null,否则返回第一个非null参数.

你会如何在Clojure中写这样的东西?

它将被调用如下:(coalesce f1 f2 f3 ...)其中的fi表单只应在需要时进行评估.如果f1是非零,则f2不应评估 - 它可能有副作用.

也许Clojure已经提供了这样的功能(或宏).

编辑:这是我提出的一个解决方案(修改自Stuart Halloway的Programming Clojure,(and ...)第206页的宏):

(defmacro coalesce
  ([] nil)
  ([x] x)
  ([x & rest] `(let [c# ~x] (if c# c# (coalesce ~@rest)))))
Run Code Online (Sandbox Code Playgroud)

似乎工作.

(defmacro coalesce
  ([] nil)
  ([x] x)
  ([x & rest] `(let [c# ~x] (if (not (nil? c#)) c# (coalesce ~@rest)))))
Run Code Online (Sandbox Code Playgroud)

固定.

clojure coalesce

13
推荐指数
2
解决办法
3313
查看次数

过滤Maven中的源代码

我写了一个小的BeanShell脚本,它取代"__LINE__"了源代码中的实际行号.它在Ant中运行良好.

我正在寻找一种方法来过滤Maven中的源代码,以便我的BeanShell脚本可以生成一个新的源代码目录,然后进行编译.

我知道资源文件过滤.是否有类似的源代码设施?

maven-2 filtering

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

比较单元测试中的scala.xml.Elem对象

我有两个scala.xml.Elem对象(实际的,预期的).我使用的是JUnit 4,但也包含了XMLUnit 1.3.

有没有简单的方法来比较两个对象的相等性,忽略XML中的属性顺序和无关紧要的空格?

我试过XMLUnit.assertXMLEqual(),但它抱怨类型是scala.xml.Elem.

我知道我可以使用equals==,但我希望断言打印两个值不相等时的好处.如果我使用assertTrue(actual.equals(expected))它们并且它们不相等,则唯一的输出将是"断言失败".

xml junit scala

13
推荐指数
2
解决办法
4821
查看次数

通过过滤器进行Clojure分区

在Scala中,分区方法将一个序列分成两个独立的序列 - 谓词为true的序列和为false的序列:

scala> List(1, 5, 2, 4, 6, 3, 7, 9, 0, 8).partition(_ % 2 == 0)
res1: (List[Int], List[Int]) = (List(2, 4, 6, 0, 8),List(1, 5, 3, 7, 9))
Run Code Online (Sandbox Code Playgroud)

请注意,Scala实现仅遍历序列一次.

在Clojure中,partition-by函数将序列拆分为多个子序列,每个子序列都是与谓词相符或不符合谓词的最长子集:

user=> (partition-by #(= 0 (rem % 2)) [1, 5, 2, 4, 6, 3, 7, 9, 0, 8])
((1 5) (2 4 6) (3 7 9) (0 8))
Run Code Online (Sandbox Code Playgroud)

split-by产品:

user=> (split-with #(= 0 (rem % 2)) [1, 5, 2, 4, 6, 3, …
Run Code Online (Sandbox Code Playgroud)

partitioning clojure

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

Clojure中的definterface和defprotocol之间的区别

除了缺乏文档,Clojure definterfacedefprotocolClojure 之间有什么区别?

clojure

13
推荐指数
2
解决办法
1679
查看次数

在Haskell中显示函数类型

除了将Haskell文件加载到GHCi然后使用之外:type <expr>,有没有什么方法可以让编译器在编译时显示所有函数的类型?

haskell types

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