小编Mat*_*iak的帖子

什么时候应该在OCaml中使用对象?

通常,OCaml程序可以在有或没有对象的情况下编写.何时使用物体最有利,何时应避免使用?

oop ocaml object

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

Java中的加权随机性

在Java中,给定n个项目,每个项目都有权重w,如何从集合中选择一个等于w的随机项目?

假设每个权重是从0.0到1.0的双精度,并且集合中的权重总和为1. Item.getWeight()返回Item的权重.

java random

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

在OCaml睡不到一秒钟

Unix.sleep函数可以暂停程序整秒,但是如何暂停它不到一秒钟?

ocaml sleep delay wait thread-sleep

15
推荐指数
3
解决办法
4372
查看次数

交换Common Lisp列表中的元素

是否有一个Common Lisp函数,它将在给定索引的列表中交换两个元素并返回修改后的列表?

lisp swap list common-lisp

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

Java如何分配指向对象而不是复制?

在课堂上,我有:

private Foo bar;
public Constructor(Foo bar)
{
    this.bar = bar;
}
Run Code Online (Sandbox Code Playgroud)

而不是从参数中提供的对象创建bar的副本,是否可以在构造函数中包含指向bar的指针,以便更改原始栏会更改此对象中的字段?

另一种方式:

int x = 7;
int y = x;
x = 9;
System.out.print(y); //Prints 7.
Run Code Online (Sandbox Code Playgroud)

可以将其设置为打印y打印9而不是7?

java reference

10
推荐指数
2
解决办法
2万
查看次数

用Java抽象数组的维数

在Java中,不同维度的数组具有不同的类型.因此,int[]作为参数的方法不能采取int[][]int[][][].我有很多代码,我创建的方法非常相似,但是对于数组的维度.有没有办法处理任意维度的数组,从而抽象出这个常见的功能?

java arrays multidimensional-array

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

编写形式`(forall a.Class a => Class(fa))=> Class(Type f)的实例

我通过执行自然转换MyType Maybe来执行我的一个程序中的默认分辨率MyType Identity.我想ToJSON为这些类型派生一个实例.我知道Maybe并且Identity有实例ToJSON a => ToJSON (Maybe a)ToJSON a => ToJSON (Identity a).

我想声明以下形式的实例:

instance (forall a . ToJSON a => ToJSON (f a)) => ToJSON (MyType f)
Run Code Online (Sandbox Code Playgroud)

这似乎是提出类型系统的合理要求.我想表现出ToJSON例如MyType f,提供的,我总能得到ToJSON (f a)每一个ToJSON a.在逻辑表示法中,这就像说我可以证明某些属性P (P(a)⇒P(f(a)))⇒P(h(f)).这似乎很适合我.

不幸的是,我得到以下错误的语法:

• Illegal polymorphic type: forall a. ToJSON a => ToJSON (f a)
  A constraint must be a monotype
• …
Run Code Online (Sandbox Code Playgroud)

haskell typeclass

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

OCaml中的线程延迟和键盘事件

这是OCaml中的简单游戏循环.显示状态,接收输入,并且状态提前.通过将线程延迟每个循环0.025秒,每秒帧数被限制为40.

main.ml:

let rec main (* state *) frame_time =
  (* Display state here. *)
  Input.get_input ();
  (* Advance state by one frame here. *)
  (* If less than 25ms have passed, delay until they have. *)
  if((Sys.time ()) < (frame_time +. 0.025)) then
    Thread.delay ((frame_time +. 0.025) -. (Sys.time ()));
  main (* next_state *) (Sys.time ())
;;

let init =
  Graphics.open_graph " 800x500";
  let start_time = (Sys.time ()) in
  main (* start_state *) start_time
;;
Run Code Online (Sandbox Code Playgroud)

对于此示例,该get_input函数只是将按键打印到窗口.

input.ml: …

multithreading ocaml sleep delay wait

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

如何测试 chrono::DateTime&lt;Local&gt; 是否在一天中的特定时间范围内?

我想将当前当地时间与恒定时间范围进行比较,但我当前的解决方案似乎比我预期的更困难。

\n\n

我可以构造一个chrono::DateTime<Local>with Local::now(). 然后我可以费力地找出是否now位于特定时间范围内,如下所示:

\n\n
let current_hour = now.hour();\nlet current_minute = now.minute();\n\n// see if `now` lies between 06:00 and 23:00\ncurrent_hour >= 6 && current_hour < 23\n\n// note the inelegance of the syntax and the potential for fencepost errors\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我想检查 06:12\xe2\x80\x9323:15 的范围,问题会变得更糟,因为我必须检查小时是否等于 6,然后检查分钟是否大于 12,然后检查 \ xe2\x80\x94 zzzzz...

\n\n

那很无聊。我可以尝试使用 来表示字符串parse_from_rfc2822,但是我必须首先发出当前日期,然后在一天中的时间进行编辑,然后检查解析错误,现在我又在睡觉了。

\n\n

我想我只是错误地阅读了计时文档。如果我要实现该库,我会尝试构建一个TimeOfDay<Local>实现 的数据类型Ord,从而允许惯用的范围检查。我想它已经在某个地方了,但我只是想念它。

\n

rust rust-chrono

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

交互式和编译的Haskell之间的不同结果(Project Euler 20)

我在Project Euler上做了问题20 - 找到100的数字之和!(阶梯,而不是热情).

这是我写的程序:

import Data.Char

main = print $ sumOfDigits (product [1..100])

sumOfDigits :: Int -> Int
sumOfDigits n = sum $ map digitToInt (show n)
Run Code Online (Sandbox Code Playgroud)

我编译它ghc -o p20 p20.hs并执行它,只0在我的命令行上.

困惑,我调用ghci并运行以下行:

sum $ map Data.Char.digitToInt (show (product [1..100]))

这返回了正确的答案.为什么编译版本不起作用?

haskell

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