小编Chr*_*way的帖子

这个功能性"模式"叫什么?

当我遇到需要这个功能的时候,我正在愚弄一些函数式编程,但是我不知道在标准命名法中这是什么类型的东西.有谁认出来了?

function WhatAmIDoing(args...)
   return function()
       return args
   end
end
Run Code Online (Sandbox Code Playgroud)

编辑:概括了函数,它需要一个可变数量的参数(或者可能是一个隐式列表)并返回一个函数,当被调用时返回所有的args,类似咖喱或泡菜,但它似乎也不是.

functional-programming naming-conventions nomenclature

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

JNI的Autoconf测试包括dir

我正在为JNI包装器编写配置脚本.其中一个配置参数是路径jni.h.对于是否为C++编译正确设置了此参数,有什么好的快速和脏的Autoconf测试?您可以假设您在Linux上运行并且g++可用.

或者,有没有办法让javah(或支持工具)直接给我这条路径?

java java-native-interface autoconf

5
推荐指数
2
解决办法
2112
查看次数

在Java中使用List

说我有一个java.util.List list,我想创建一个新List加入的元素e,以年初list(即,我想缺点 elist).例如,如果list

[1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

e5,再cons(e,list)

[5,1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

它的元素listcons(e,list)共享是可以的,但list不应该被修改.

实施最简单和/或最有效的方法是cons什么?结果不可修改是可以的.允许使用Google Collections Library.

如果listcom.google.common.collect.ImmutableList

java collections list guava

5
推荐指数
3
解决办法
5155
查看次数

在带空格的路径上使用Make $(dir)或$(notdir)

我在Makefile中使用类似于以下的代码:

empty:=
space:= $(empty) $(empty)
path_escape = $(subst $(space),\$(space),$(1))

TOP=$(call path_escape,$(abspath .))
TARGET=$(TOP)/foo

$(info TOP='$(TOP)')
$(info TARGET='$(TARGET)')

all: $(TARGET)

$(TARGET):
    touch '$(notdir $@)'

.PHONY: $(TARGET)
Run Code Online (Sandbox Code Playgroud)

如果我在没有空格的目录中使用space-test它,比如说,它可以正常工作:

$ make
TOP='/tmp/space-test'
TARGET='/tmp/space-test/foo'
touch 'foo'
Run Code Online (Sandbox Code Playgroud)

但是,如果我在一个带空格的目录中使用它,比如说space test,那就$(notdir)错了:

TOP='/tmp/space\ test'
TARGET='/tmp/space\ test/foo'
touch 'space foo'
Run Code Online (Sandbox Code Playgroud)

这里发生的事情是$(notdir)解释/tmp/space test/foo2路和返回的"文件部分" (即,spacefoo).这个奇怪的部分TARGET是正确逃脱的; 不知何故,在规则内部或内部$(notdir),反斜杠转义被忽略.

我在这做错了什么?

makefile path quoting

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

SVN中维护分支的工具

我的团队使用SVN进行源代码管理.最近,我一直在努力从树干偶尔合并一个分支,它一直是一个相当恼人的经验(参见乔尔斯波斯基的"颠覆故事#1"),所以我一直在寻找替代方法来管理分支与合并.鉴于集中式SVN存储库是不可协商的,我想要的是一组满足以下条件的工具.

  1. 完整的修订历史应存储在SVN中,用于中继和分支.

  2. 在任何一个方向(并且可能是纵横交错)的合并应该是相对无痛的.

  3. 合并历史记录应尽可能存储在SVN中.

我已经看过这两个git-svn并且bzr-svn似乎都没有达到工作 - 基本上,鉴于他们可以从SVN存储库导出的修订历史,他们似乎没有比SVN更好地处理合并工作.例如,用克隆库后git,我的分支修订历史记录显示原分公司关闭行李箱,但git没有"发现"任何临时SVN的合并为"原生"合并,修订历史是一个长行.因此,任何尝试从git收益中继合并收益与SVN合并一样多的冲突.(此外,git-svn文档明确警告不要使用git分支之间的合并.)

有没有办法调整我的工作流程以git满足上述要求?也许我只需要提示或技巧(或单独的合并工具?)来帮助SVN更好地融入分支机构?

svn git version-control merge branch

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

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

Java:将二维字符串数组打印为右对齐表

将数组的单元格打印为右对齐表格的最佳方法是什么String[][]?例如,输入

{ { "x", "xxx" }, { "yyy", "y" }, { "zz", "zz" } }
Run Code Online (Sandbox Code Playgroud)

应该产生输出

  x xxx
yyy   y
 zz  zz
Run Code Online (Sandbox Code Playgroud)

这似乎是人们应该能够使用 完成的事情java.util.Formatter,但它似乎不允许非常数的字段宽度。最佳答案将使用一些标准方法来填充表格单元格,而不是手动插入空格字符。

java formatting printf

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

OCaml中的可变数据

我在OCaml中创建了一个可变数据结构,但是当我去访问它时,它会产生一个奇怪的错误,

这是我的代码

type vector = {a:float;b:float};;
type vec_store = {mutable seq:vector array;mutable size:int};;

let max_seq_length = ref 200;;

exception Out_of_bounds;;
exception Vec_store_full;;

let vec_mag {a=c;b=d} = sqrt( c**2.0 +. d**2.0);;


let make_vec_store() = 
    let vecarr = ref ((Array.create (!max_seq_length)) {a=0.0;b=0.0}) in
         {seq= !vecarr;size=0};;
Run Code Online (Sandbox Code Playgroud)

当我在ocaml顶级做这个

let x = make _ vec _store;;
Run Code Online (Sandbox Code Playgroud)

然后尝试做x.size我得到这个错误

Error: This expression has type unit -> vec_store
       but an expression was expected of type vec_store
Run Code Online (Sandbox Code Playgroud)

什么似乎是问题?我不明白为什么这不起作用.

谢谢,费萨尔

ocaml functional-programming mutable

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

SML中的原型设计功能

我有两个功能,f并且g,该递归调用对方.不幸的是,当f调用时g,它还没有被声明,所以我得到一个"未绑定的变量"错误.如何在SML/NJ中对此功能进行原型(或等效词汇表)?

functional-programming sml smlnj

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