小编Cod*_*bda的帖子

在特定行中禁止来自OCaml的警告

我目前正在构建一个项目,它允许不同类型的函数,具有不同数量的参数(但它们都是相同类型的).为了定义这些函数,我为每个函数使用了这个代码:

let {name} [a; b; {...}] =
  {...}
Run Code Online (Sandbox Code Playgroud)

我的代码确保列表中的元素数量是正确的,如果不是这样的话,我会发现运行时错误.但我有一个警告,我想要隐藏,因为我知道这种模式匹配并非详尽无遗,而且我不希望看到警告不会警告我有关真正的错误我有制作.

另一方面:如果存在像Dafny(来自微软)这样的语言,那就是功能性的,我很乐意尝试那种语言.

编辑:如果没有办法做到这一点,请回答说明.在这种情况下,我将构建一个过滤掉这些警告的命令行工具.(但这可能会抹掉所有格式......)

ocaml

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

C#中[,]和[][]的区别

我目前正在尝试学习 C#,我遇到了以下问题:

C# 中的类型[,][][]类型之间有什么区别?

c# mono multidimensional-array

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

TASM 寻址减一

我目前正在为大学实施 Snake,为此我们必须使用 TASM。

我的主要游戏数据是这样排列的(使用 C 语法):

struct GameLine {
    uint8_t direction_bits[10];  // 2 bits per entry, the first entry is invalid since valid x positions start at one
    uint8_t collision_bits[5];  // 1 bit per entry, the first entry is again invalid but has to stay zero
    uint8_t aux;  // padding such that GameLine is 16 bytes big, also used to store other information at times.
};

struct GameData {
    struct GameLine lines[23];
} PHYSICAL_GAME_DATA;
Run Code Online (Sandbox Code Playgroud)

问题是每帧写入方向位会覆盖大 x 位置的读取冲突位(38 是最大位置,但它发生得更早)。我说“读取冲突位”是因为我无法验证physical_game_data实际驻留的位置,因为我不知道如何指示汇编器 …

memory assembly tasm off-by-one x86-16

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

使用稍后在OCaml的类型定义中声明的类型

我目前正在OCaml中构建程序,并且遇到以下问题:我需要两种类型,这些类型包含另一种类型的值。它基本上是这样的(但稍微复杂一点):

type a = {
  x: some_other_type;
  next: b
};;

type b =
    NoA
  | SomeA of a;;
Run Code Online (Sandbox Code Playgroud)

我注意到我可以引用以前未定义的类型(因此此声明不会引发任何错误),但是如果我尝试使用它,它将区分b的两种类型:在a的定义中提到的一种,以及我定义的一个

我知道我可以用丑陋的方式做到这一点:

type 'b a = {
  x: some_other_type;
  next: 'b
};;

type b =
    NoA
  | SomeA of b a;;
Run Code Online (Sandbox Code Playgroud)

但是我想知道是否有更好的解决方案(尽管我不得不承认我很喜欢直接能够看到b是递归类型)。

ocaml types

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

标签 统计

ocaml ×2

assembly ×1

c# ×1

memory ×1

mono ×1

multidimensional-array ×1

off-by-one ×1

tasm ×1

types ×1

x86-16 ×1