小编Ing*_*ngo的帖子

参数值(不是类型)的多态性?

是否存在编程语言(可能是概念或研究论文),它允许对函数/方法参数值进行多态化?的种类:

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

4
推荐指数
1
解决办法
102
查看次数

有没有更简单的方法让枚举常量可见?

我发现自己在写这样的东西:

pub enum Player {BLACK, WHITE,}

const BLACK: Player = Player::BLACK;
const WHITE: Player = Player::WHITE;
Run Code Online (Sandbox Code Playgroud)

原因当然是避免匹配表达式和常量的其他用途中的噪音。

有没有更简单的方法来实现这一目标?

enums rust

4
推荐指数
1
解决办法
70
查看次数

是否有解决此类琐碎目标的策略(精益定理证明)?

我是一个初学者,我遇到了以下问题:

\n
import 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\n
Run Code Online (Sandbox Code Playgroud)\n

现在的状态是:

\n
n : \xe2\x84\x95\n\xe2\x8a\xa2 2 \xe2\x89\xa0 2 * (2 * n.succ)\n
Run Code Online (Sandbox Code Playgroud)\n

它看起来如此微不足道,以至于我认为必须有一种策略来解决它。但 linarith、ring、simpl、trivial 不起作用。

\n

那么,我是否错过了一些重要的内容?

\n

我还尝试使用现有的引理来解决这个问题。第一步我想达到:

\n
n : \xe2\x84\x95\n\xe2\x8a\xa2 1 \xe2\x89\xa0 2 * n.succ\n
Run 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\n
Run Code Online (Sandbox Code Playgroud)\n

希望在图书馆找到适用的引理。

\n

lean

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

java -server标志有什么意义吗?

我想每个人都知道-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标签?

干杯

java jvm

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

hashCode和Aggregation

是否存在标准元算法或如何为由其他类组成的类实现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对象.

java language-agnostic

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

是否可以在Play框架中使用frege

我正在搜索一个新项目的语言.这是基于Web的项目,我想采用REST架构.

我还想要一种函数编程语言.我可以选择Haskell(因为它很酷)和Scala(因为Play Framework).

经过一些研究发现它与语言之间的主要区别后,我找到了Frege,一种在JVM上运行的类似Haskell的语言.

所以我的问题是,因为Frege在JVM上运行,是否可以将Play框架与Frege一起使用?

java jvm scala playframework frege

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

如何从哈希映射中删除多个元素?

我需要防止国际象棋引擎中的换位表无限增长,因此我创建了一个小函数来在移动之间调用以清理一些东西。目标是仅在必要时清理(超过 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)

rust

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

从里面的Class中找到一个jar的路径?

插件xyz应该在Java项目之上运行并生成一些Java代码.这段代码需要在构建和运行时插件的jar中提供的类.因此,插件的jar(或安装目录)应该出现在构建类路径中.

一个插件如何找到它自己的jar /安装目录的确切路径,或者就此而言,以便携方式找到一些相关插件jar的路径?

背景是我想制作一个用户可以运行的向导来启用项目的xyz特性.应为用户提供有意义的默认值,以便在何处查找所需的运行时功能,并将给定的库添加到构建路径中.

java eclipse eclipse-plugin classpath

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

为什么在过滤 Vec 时会得到双重引用?

我总是在编写正确的迭代时遇到困难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)

rust

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

Haskell方程根编译错误

以下算法用于计算二次方程根,但编译它会产生编译错误.我从教程中复制了它.

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 functional-programming

0
推荐指数
1
解决办法
187
查看次数

函数语言中的动态编程

我学习哈斯克尔.我遇到的问题是我无法保存中间计算步骤.感觉无效.如何在函数式编程中使用动态编程?

haskell functional-programming

0
推荐指数
1
解决办法
493
查看次数

如何在java中实现haskell数据类型?

如果您有这些Haskell数据类型

data Mlist a = Mlist [a]

data Mordering = MLT | MEQ | MGT | MIN deriving (Eq, Show)
Run Code Online (Sandbox Code Playgroud)

什么是在java中写这个的最好方法?

java haskell functional-programming frege

0
推荐指数
1
解决办法
519
查看次数

echo用\ x20替换\ x09

一位同事注意到,在创建具有特定非打印字符的文件时,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文件.有什么想法吗?

perl

0
推荐指数
1
解决办法
343
查看次数