我想fill-column在Clojure模式下将Emacs 设置为120,但是保留默认值(80).
我怎么能在我的.emacs文件中这样做?
谢谢.
我是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) Rich Hickey和其他人已经提到Clojure不会从即将推出invokeDynamic的JVM 7或8计划中获得显着改进,但是会看到尾递归的性能提升.
尾递归是否会对其产生影响
(fn [...] (recur ...))
Run Code Online (Sandbox Code Playgroud)
要么
(loop [...] (recur ...))
Run Code Online (Sandbox Code Playgroud)
我不希望它们得到任何更快,因为编译器可能已经生成循环结构.
我正在寻找使用Webstart Maven插件的完整应用程序的源代码.
有任何想法吗?
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)
固定.
我写了一个小的BeanShell脚本,它取代"__LINE__"了源代码中的实际行号.它在Ant中运行良好.
我正在寻找一种方法来过滤Maven中的源代码,以便我的BeanShell脚本可以生成一个新的源代码目录,然后进行编译.
我知道资源文件过滤.是否有类似的源代码设施?
我有两个scala.xml.Elem对象(实际的,预期的).我使用的是JUnit 4,但也包含了XMLUnit 1.3.
有没有简单的方法来比较两个对象的相等性,忽略XML中的属性顺序和无关紧要的空格?
我试过XMLUnit.assertXMLEqual(),但它抱怨类型是scala.xml.Elem.
我知道我可以使用equals或==,但我希望断言打印两个值不相等时的好处.如果我使用assertTrue(actual.equals(expected))它们并且它们不相等,则唯一的输出将是"断言失败".
在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) 除了缺乏文档,Clojure definterface和defprotocolClojure 之间有什么区别?
除了将Haskell文件加载到GHCi然后使用之外:type <expr>,有没有什么方法可以让编译器在编译时显示所有函数的类型?