我目前正在构建一个项目,它允许不同类型的函数,具有不同数量的参数(但它们都是相同类型的).为了定义这些函数,我为每个函数使用了这个代码:
let {name} [a; b; {...}] =
{...}
Run Code Online (Sandbox Code Playgroud)
我的代码确保列表中的元素数量是正确的,如果不是这样的话,我会发现运行时错误.但我有一个警告,我想要隐藏,因为我知道这种模式匹配并非详尽无遗,而且我不希望看到警告不会警告我有关真正的错误我有制作.
另一方面:如果存在像Dafny(来自微软)这样的语言,那就是功能性的,我很乐意尝试那种语言.
编辑:如果没有办法做到这一点,请回答说明.在这种情况下,我将构建一个过滤掉这些警告的命令行工具.(但这可能会抹掉所有格式......)
我目前正在尝试学习 C#,我遇到了以下问题:
C# 中的类型[,]和[][]类型之间有什么区别?
我目前正在为大学实施 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实际驻留的位置,因为我不知道如何指示汇编器 …
我目前正在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是递归类型)。