问题列表 - 第10526页

以CS101学生可以理解的方式描述Damas-Milner类型推断

Hindley-Milner是一种类型系统,是许多众所周知的函数式编程语言的类型系统的基础.Damas-Milner是一种在Hindley-Milner型系统中推断(推导?)类型的算法.

维基百科给出了算法的描述,据我所知,该算法相当于一个单词:"统一".这就是它的全部吗?如果是这样,那意味着有趣的部分是类型系统本身而不是类型推理系统.

如果Damas-Milner不仅仅是统一,我想要一个Damas-Milner的描述,其中包括一个简单的例子,理想情况下是一些代码.

此外,该算法通常被称为类型推断.它真的是一个推理系统吗?我认为这只是推断出类型.

相关问题:

functional-programming type-inference hindley-milner

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

为什么'<'和'lt'运算符在Perl中返回不同的结果?

我只是在学习Perl的比较运算符.我尝试了以下代码: -

$foo=291;
$bar=30;

if ($foo < $bar) { 
        print "$foo is less than $bar (first)\n"; 
}

if ($foo lt $bar) { 
        print "$foo is less than $bar (second)\n"; 
}
Run Code Online (Sandbox Code Playgroud)

输出291小于30(秒).这是否意味着lt运算符总是将变量转换为字符串然后进行比较?Perl使lt运算符的行为与运算符的不同之处是<什么?

谢谢,

perl comparison

3
推荐指数
2
解决办法
5878
查看次数

如何(快速)在C++(MFC)中填充CListCtrl?

在我的应用程序中,我有一些CListCtrl表.我用带有for循环的数组填充/刷新它们.在循环内部,我必须对如何显示值进行一些调整,这样就无法以任何方式进行数据绑定.

真正的问题是填充表所需的时间,因为它是逐行重绘的.如果我在控件填充时将其置于不可见状态,并在循环完成后再次使其可见,则整个方法要快得多!

现在我正在寻找一种方法来阻止控件重新绘制,直到完全填满.或任何其他方式来加快速度.

c++ mfc clistctrl

7
推荐指数
2
解决办法
5451
查看次数

用于膨胀/收缩(抵消,缓冲)多边形的算法

我如何"膨胀"多边形?也就是说,我想做类似的事情:

替代文字

要求是新的(膨胀的)多边形的边/点都与旧的(原始)多边形处于相同的恒定距离(在示例图片上它们不是,因为那时它必须使用弧来填充顶点,但是让我们暂时忘掉它;)).

我正在寻找的数学术语实际上是向内/向外多边形的偏离.+1指向balint指出这一点.替代命名是多边形缓冲.

我的搜索结果:

以下是一些链接:

algorithm geometry polygon buffering computational-geometry

187
推荐指数
8
解决办法
8万
查看次数

从绝对的uri获得相对uri

我有一个System.Uri,例如,

var uri = new Uri("http://www.domain.com/foo/bar");
Run Code Online (Sandbox Code Playgroud)

我如何才能获得相对的Uri:

/foo/bar
Run Code Online (Sandbox Code Playgroud)

.net

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

PHP - 序列化浮点

我在6到8之间生成10个随机浮点数(完全有理由),并以序列化形式将它们写入mysql数据库.但是在存储时似乎出现了一个怪癖:

在存储之前我只是输出相同的数据来查看它的样子,这就是我得到的结果

a:10:{i:0;d:6.20000000000000017763568394002504646778106689453125;i:1;d:7.5999999999999996447286321199499070644378662109375;i:2;d:6.4000000000000003552713678800500929355621337890625;..}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我得到的数字很长,比如6.20000000000000017763568394002504646778106689453125而不是我真正想看到的,只有6.2.只有在我序列化数据时才会发生这种情况,如果我只是输出数组,我确实将浮点值设置为一位小数.这是我的代码:

function random_float ($min,$max) {
   return ($min+lcg_value()*(abs($max-$min)));
}

$a1 = random_float(6, 8);
$a1 = round($a1, 1);
$a2 = random_float(6, 8);
$a2 = round($a2, 1);    
$a3 = random_float(6, 8);
$a3 = round($a3, 1);
    ...
$array = array($a1, $a2, $a3, $a4, $a5, $a6, $a7, $a8, $a9, $a10);

echo serialize($array);
Run Code Online (Sandbox Code Playgroud)

php random floating-point serialization

11
推荐指数
3
解决办法
6449
查看次数

ADO.Net DataTables有索引吗?

我正在使用VSTS 2008 + C#+ .Net 3.5 + SQL Server 2008 + ADO.Net.如果我使用ADO.Net的DataTable从数据库加载表,并在数据库表中,我在表上定义了几个索引.我的问题是,是否在ADO.Net DataTable上,有相关索引(与我在物理数据库表上创建的索引相同)来提高DataTable的某些操作性能?

乔治,提前谢谢

.net c# sql-server datatable ado.net

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

在32位.NET进程中分配超过1,000 MB的内存

我想知道为什么我无法在32位.NET进程中分配超过1,000 MB的内存.以下迷你应用程序在分配1,000 MB后抛出OutOfMemoryException.为什么1,000 MB,而不是说1.8 GB?是否有可以更改的流程范围设置?

static void Main(string[] args)
{
    ArrayList list = new ArrayList();
    int i = 0;
    while (true)
    {
        list.Add(new byte[1024 * 1024 * 10]); // 10 MB
        i += 10;
        Console.WriteLine(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

PS:垃圾收集没有帮助.

编辑,澄清我想要的:我编写了一个服务器应用程序,在写入数据库/磁盘之前处理大量数据.我没有为所有内容创建临时文件,而是编写了一个内存缓存,这使整个过程非常快.但记忆是有限的,所以我试图找出限制是什么.并且想知道为什么我的小测试程序在完全1,000 MB之后抛出了OutOfMemoryException.

.net c# memory out-of-memory large-object-heap

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

拦截windows打开文件

我正在尝试制作一个可以拦截文件打开过程的小程序.

目的是当用户双击给定文件夹中的文件时,窗口将通知软件,然后它处理该请求并返回窗口文件的数据.

也许会有另一种解决方案,比如监控Open消息并强制Windows在程序准备文件内容时等待.

该概念的一个应用可以是以透明的方式管理文件的解密,以便用户.在这种情况下,加密文件将在磁盘上,当用户打开它时(双击它或某些应用程序,如记事本),后台进程将拦截该打开事件,解密文件并提供内容该文件的请求应用程序.

这是一个有点奇怪的概念,它可能像"中间人"网络概念,但用文件而不是网络数据包.

谢谢阅读.

c++ windows file-io events winapi

16
推荐指数
3
解决办法
7764
查看次数

英特尔和AMD处理器是否具有相同的汇编程序?

C语言用于编写UNIX以实现可移植性 - 使用不同编译器编译的相同C语言程序生成不同的机器指令.为什么Windows操作系统能够在Intel和AMD处理器上运行?

c x86 compatibility amd intel

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