是否存在编程语言(可能是概念或研究论文),它允许对函数/方法参数值进行多态化?的种类:
function factorial(int value > 0){ /* code here */}
function factorial(int value == 0){ /* code here */}
function factorial(int value < 0){ /* code here */}
Run Code Online (Sandbox Code Playgroud)
而且,这种多态性的官方名称(如果有的话)是什么?
language-agnostic polymorphism programming-languages language-design
我发现自己在写这样的东西:
pub enum Player {BLACK, WHITE,}
const BLACK: Player = Player::BLACK;
const WHITE: Player = Player::WHITE;
Run Code Online (Sandbox Code Playgroud)
原因当然是避免匹配表达式和常量的其他用途中的噪音。
有没有更简单的方法来实现这一目标?
我是一个初学者,我遇到了以下问题:
\nimport tactic.linarith\nimport tactic.suggest\n\nnoncomputable theory\nopen_locale classical\n\nlemma two_ne_four_mul_any (n:\xe2\x84\x95) : 2 \xe2\x89\xa0 2 * 2 * n := begin\n cases n,\n linarith,\n rw mul_assoc,\n ???\nend\nRun Code Online (Sandbox Code Playgroud)\n现在的状态是:
\nn : \xe2\x84\x95\n\xe2\x8a\xa2 2 \xe2\x89\xa0 2 * (2 * n.succ)\nRun Code Online (Sandbox Code Playgroud)\n它看起来如此微不足道,以至于我认为必须有一种策略来解决它。但 linarith、ring、simpl、trivial 不起作用。
\n那么,我是否错过了一些重要的内容?
\n我还尝试使用现有的引理来解决这个问题。第一步我想达到:
\nn : \xe2\x84\x95\n\xe2\x8a\xa2 1 \xe2\x89\xa0 2 * n.succ\nRun Code Online (Sandbox Code Playgroud)\n希望某些更高级别的策略现在能够看到这是真的。但是,我不知道如何对方程两边进行一些操作。两边都除以2不是应该有可能吗?
\n我的计划是继续将 rhs 更改为 2*(n+1) 和 2n+2,也许目标是
\n\xe2\x8a\xa2 0 \xe2\x89\xa0 2 * n + 1\nRun Code Online (Sandbox Code Playgroud)\n希望在图书馆找到适用的引理。
\n我想每个人都知道-server命令行JVM参数.将Java应用程序作为Server运行时是否有意义?
我读到它做了一些更优化,因此,你的一些Java代码可能表现得像
boolean flag=true;
while(flag) {
if(checkMethod()) {
flag=false;
}
}
Run Code Online (Sandbox Code Playgroud)
[编辑] 此代码在两个方案1中都可以正常工作(相同),不使用-server和2.使用-server,将使用适当的可测试代码再次更新.
它永远不会出现在while循环中..
我们刚开始一个新项目,我们应该开始使用-server进行测试吗?
你在用它吗?
我想知道它是否真的有意义而且非常重要,为什么像tomcat/jetty/geronimo等服务器产品的官方文档/教程从不在代码示例中使用/ show -server标签?
干杯
是否存在标准元算法或如何为由其他类组成的类实现hashCode()方法的最佳实践:
class A { B b; C c; ... }
Run Code Online (Sandbox Code Playgroud)
如果我们假设B和C在实现它们的hashCode()方面付出了一些努力,那么将As和hashcode建立在B和的基础上当然是个好主意C.但如何最好地结合它们呢?
我问这个是因为某些操作显然不适合像:
class Naive {
B b1, b2;
public int hashCode() { return b1.hashCode() ^ b2.hashCode(); }
}
Run Code Online (Sandbox Code Playgroud)
这会导致每个Naive对象的哈希码为0,恰好有两个相等的B对象.
我正在搜索一个新项目的语言.这是基于Web的项目,我想采用REST架构.
我还想要一种函数编程语言.我可以选择Haskell(因为它很酷)和Scala(因为Play Framework).
经过一些研究发现它与语言之间的主要区别后,我找到了Frege,一种在JVM上运行的类似Haskell的语言.
所以我的问题是,因为Frege在JVM上运行,是否可以将Play框架与Frege一起使用?
我需要防止国际象棋引擎中的换位表无限增长,因此我创建了一个小函数来在移动之间调用以清理一些东西。目标是仅在必要时清理(超过 250 万个条目),但之后至少清理 100,000 个,以便我们跟踪的仓位数量始终约为 250 万个:
pub fn ttGarbageHash(&self, hash: &mut HashMap<Position, Transp>) {
let size = hash.len();
println!("# hash size is {}", size);
if size <= 2_500_000 {
println!("# no need for cleanup");
return;
}
// clean at least 100,000
let n = max(100_000, size - 2_500_000);
let keys: Vec<_> = { hash.keys().take(n).collect() };
for k in keys {
hash.remove(k);
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我收到一条错误hash.remove(k)消息
pub fn ttGarbageHash(&self, hash: &mut HashMap<Position, Transp>) {
let size = hash.len();
println!("# …Run Code Online (Sandbox Code Playgroud) 插件xyz应该在Java项目之上运行并生成一些Java代码.这段代码需要在构建和运行时插件的jar中提供的类.因此,插件的jar(或安装目录)应该出现在构建类路径中.
一个插件如何找到它自己的jar /安装目录的确切路径,或者就此而言,以便携方式找到一些相关插件jar的路径?
背景是我想制作一个用户可以运行的向导来启用项目的xyz特性.应为用户提供有意义的默认值,以便在何处查找所需的运行时功能,并将给定的库添加到构建路径中.
我总是在编写正确的迭代时遇到困难Vec。也许这是因为我还没有正确理解何时以及为什么引入引用。
例如
pub fn notInCheck(&self) -> bool { .... } // tells whether king left in check
pub fn apply(&self, mv: Move) -> Self { ... } // applies a move and returns the new position
pub fn rawMoves(&self, vec: &mut Vec<Move>) { ... } // generates possible moves, not taking chess into account
/// List of possible moves in a given position.
/// Verified to not leave the king of the moving player in check.
pub fn …Run Code Online (Sandbox Code Playgroud) 以下算法用于计算二次方程根,但编译它会产生编译错误.我从教程中复制了它.
2 roota.hs:5:20: parse error on input `='
roots (a,b,c) =
if d < 0 then error "sorry" else (x1, x2)
where x1 = e + sqrt d / (2 * a)
x2 = e - sqrt d / (2 * a)
d = b * b - 4 * a * c
e = - b / (2 *a)
Run Code Online (Sandbox Code Playgroud)
谢谢你的回答.
我学习哈斯克尔.我遇到的问题是我无法保存中间计算步骤.感觉无效.如何在函数式编程中使用动态编程?
如果您有这些Haskell数据类型
data Mlist a = Mlist [a]
data Mordering = MLT | MEQ | MGT | MIN deriving (Eq, Show)
Run Code Online (Sandbox Code Playgroud)
什么是在java中写这个的最好方法?
一位同事注意到,在创建具有特定非打印字符的文件时,perl会替换它们.在这种情况下,\ x09被替换为\ x20.
echo `perl -e 'print "\x41"x40 . "\xc4\x09\x40"'` > test.out
Run Code Online (Sandbox Code Playgroud)
查看生成的文件时:
xxd test.out
Run Code Online (Sandbox Code Playgroud)
你看:
0000000: 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA
0000010: 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA
0000020: 4141 4141 4141 4141 c420 400a AAAAAAAA. @.
Run Code Online (Sandbox Code Playgroud)
请注意,最后3个字节是\ xc4,\ x20,\ x40而不是\ xc4,\ x09,\ x40.没有人能够向我们解释这个.获取\ x09的唯一方法是使用十六进制编辑器手动编辑test.out文件.有什么想法吗?