我正在使用clojure,虽然之前我已经涉足lisps,但我很难找到一种干净的方法来在cond语句中嵌入let语句.例如,请考虑以下功能:
(defn operate-on-list [xs]
(let [[unpack vector] (first xs)]
(cond
[(empty? xs) 'empty
unpack vector
:else (operate-on-list (rest xs))])))
Run Code Online (Sandbox Code Playgroud)
它是列表上非常标准的递归操作,但它需要在列表中的第一个元素上进行一些工作才能使用内容.当然,问题是列表可能是空的.
在这个例子中,改变unpackto ((first xs) 0)and vectorto 并不难((first xs) 1),但是如果需要做更多的工作(第一个xs),这很快就会变得很难看.
有没有办法在cond中有效地使用let语句?
谢谢.
-Nate
我为生成一个简单的网页创建了一个 makefile。makefile 背后的想法是这样的:
main.sty必须编译的手写笔 cssone位于lib/examples/one.jade模板文件).coffee脚本文件).md降价文件)example.jade模板用于这些组合成一个示例文件
example.jade必须复制到正确的构建示例目录,因为模板语言只能做相对导入。因此,为了导入example/one/code.html,我们必须将模板复制到example/one并包含它code.html。x都将编译为tbuild/examples/x.htmllib/index.jade模板被移动到build(以便它可以包括示例文件)index.jade模板编译为 html这有点简化,但这样更容易理解。简化是每个例子中实际上有两个标记文件(left.html和right.html),并且代码文件都是通过pygments运行并作为脚本使用的,所以code.html和code.coffee都需要使其成为构建。
现在,makefile 看起来像这样:
LIB = lib
BUILD = build
LIBEX = $(LIB)/examples
BUILDEX = $(BUILD)/examples
EXAMPLES = $(addsuffix .html,$(addprefix $(BUILDEX)/,$(shell ls …Run Code Online (Sandbox Code Playgroud) 我正在为 DSL 编写 vim 语法高亮显示,其中函数遵循以下格式:
# A function with no arguments
<function>
# A function with arguments
<function(arg1, arg2)>
# A function with text
<function block of normal text>
# A function with args and text
<function(arg1,arg2) text>
# Line breaks are allowed pretty much everywhere.
<function(
arg1,
arg2)
a block of text>
# As is nesting
<function(<subfunc>) Some text with <another(subfunction) etc.>>
# Backslash escape
<function(single arg with a comma: "\,") contained bracket between quotes: "\>">
Run Code Online (Sandbox Code Playgroud)
它是一种文本处理语言(想想类固醇降价),所以文本块必须是非限制性的。
我在为此编写 vim …
我想投机地用球拍表达,希望(但不是特别期待)一个结果.我的代码有一个很难的时间限制.是否有一种简单的方法可以运行一些球拍代码几秒钟,然后可靠地杀死它并在截止日期之前执行后备代码?
我正在寻找一个好的角色,这意味着在unicode中"故事结束".我记得曾经看过一个看起来像分形的人,真的很酷.有谁知道我在哪里可以找到这个角色?更重要的是,当我不知道它的名字时,我在哪里可以找到具有特殊含义的unicode角色?谷歌不是很有帮助.
我有两个matlab向量.第一个有N元素,另一个有元素k*N.我知道是什么k,我想拼接列表,使第一个向量中的每个元素出现k在下一个向量的相应元素之前.例如:
k = 3
x = [1 5 9]
y = [2 3 4 6 7 8 10 11 12]
Run Code Online (Sandbox Code Playgroud)
应该结合起来看起来像这样:
z = [1 2 3 4 5 6 7 8 9 10 11 12]
Run Code Online (Sandbox Code Playgroud)
有一种简单的方法可以快速完成吗?我的x和y都很大.谢谢!
我一直无法说服Idris整体检查器我的功能是完全的.这是我遇到的问题的简单示例版本.假设我们有一个非常简单的以下形式的表达式:
data SimpleType = Prop | Fn SimpleType SimpleType
data Expr : SimpleType -> Type where
Var : String -> Expr type
Lam : String -> Expr rng -> Expr (Fn dom rng)
App : Expr (Fn dom rng) -> Expr dom -> Expr rng
Run Code Online (Sandbox Code Playgroud)
我想写这个函数
total sub : {a, b : SimpleType} -> String -> Expr a -> Expr b -> Expr b
Run Code Online (Sandbox Code Playgroud)
这将需要一个DecEq实例,SimpleType但没有太多花哨.问题是如何说服类型检查器函数是完全的.例如,考虑实施sub如下:
total sub : {a, b : SimpleType} -> String …Run Code Online (Sandbox Code Playgroud) Guava的Optional类非常接近于MaybeJava中的有用类型.我想做的就是扩展一下:
class Maybe<X> extends Optional<X> {
public Maybe<Y> map(Function<X, Y> f) {
if (isPresent()) {
return Maybe.of(f.apply(get()));
}
return Maybe.absent();
}
}
Run Code Online (Sandbox Code Playgroud)
那么难吗?显然是的,确实如此.Java不知道函数中的Y类型是什么map,一切都死得很厉害.是否可以map在Java中编写泛型?
有没有办法在用require或加载clojure库时重命名它们use?
例如,有没有办法做某事
(require 'some.include.path.some-library :as something-else)
Run Code Online (Sandbox Code Playgroud)
然后引用some-library通过的元素something-else/element-name?
谢谢.
我刚刚安装了标准,我希望能够从repl和其他项目中使用它.如何扩展java类路径,以便我可以从任何地方使用已安装的库?
我很感激能够轻松处理我将来工作的所有项目的答案.我正在使用leiningen,我认为当你跑步时会这样做lein install,但要么我做错了,要么就是不够.
我正在编写一个数据库应用程序,数据库的某些部分可能需要根据时间进行更新,而不是基于用户操作.
例如,可能存在每天更新的某些值,以及必须更新的某些其他值,例如,在创建数据库条目后四小时.
因此,我需要一些方法来定期更新值(每天更新数据库的脚本)以及在将来的特定时间更新值的方法(创建条目时,您需要在四小时内运行更新).
数据库将通过Web前端进行管理,因此我使用Django来设置数据库和管理,因为Django使设计数据库成为一种乐趣.但是,我不知道如何设置另一方,即在某些时候更新数据库的那一方.
你们怎么建议这样做?运行python脚本并使用每日cronjob运行它是否足够,或者这不是最佳实践?这种事情是否经常发生,并且存在这样做的工具/方法吗?
我没有这方面的经验,我想知道在我跳入并开始重新发明轮子之前它是如何完成的.
长话短说,我正在使用一个带有导致崩溃的bug的库,如果我使用带括号后的插入符号的正则表达式(例如,正则表达式[^ a]).正在处理这个错误,并且切换库不是一个简单的选择,我希望能够在现在和错误修复之间继续工作.
因此,我需要在不使用插入符的情况下表达以下两个正则表达式:
[^'] and [^"]
Run Code Online (Sandbox Code Playgroud)
可以这样做吗?如果是这样,怎么样?现在可以接受一个包含所有ascii字符的正则表达式,但我正在使用unicode,因此这不是一个不漏水的解决方法.