问题列表 - 第17277页

推断类型似乎检测到无限循环,但实际发生了什么?

在Andrew Koenig的关于ML类型推理的轶事中,作者使用合并排序的实现作为ML的学习练习,并且很高兴地发现"不正确"的类型推断.

令我惊讶的是,编译器报告了一种类型

'a list -> int list
Run Code Online (Sandbox Code Playgroud)

换句话说,这个sort函数接受任何类型的列表并返回一个整数列表.

那是不可能的.输出必须是输入的排列; 它怎么可能有不同的类型?读者肯定会发现我的第一个冲动:我想知道我是否在编译器中发现了一个错误!

在考虑了一些之后,我意识到还有另一种方法可以忽略它的论点:也许它根本没有返回.实际上,当我尝试它时,这正是发生的事情:sort(nil)确实返回nil,但排序任何非空列表将进入无限递归循环.

当翻译成Haskell时

split [] = ([], [])
split [x] = ([x], [])
split (x:y:xs) = (x:s1, y:s2)
  where (s1,s2) = split xs

merge xs [] = xs
merge [] ys = ys
merge xx@(x:xs) yy@(y:ys)
  | x < y     = x : merge xs yy
  | otherwise = y : merge xx ys

mergesort [] = []
mergesort xs = merge …
Run Code Online (Sandbox Code Playgroud)

haskell type-systems type-inference ml hindley-milner

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

对D2010的更新真的很有意义

我正在尝试将我自己的项目迁移到delphi 2010.但它似乎非常困难.

  1. 我将TntControls用于旧项目.如果我删除这个库,我必须重新实现一些运行时函数.例如:将UnicodeString转换为指定的代码页.
  2. "SizeOf","Length",FillChar()仍然让我困惑.如果SizeOf()应替换为Length(),编译器将发出警告.但是我还没有找到任何安全的教程.
  3. 尝试将AnsiString强制转换为UnicodeString时出现令人困惑的警告.这次谈话不会导致数据丢失,不是吗?
  4. 必须重新测试许多代码(zip,string utils等).

太多令人头疼的问题......有人可以分享将现有项目从一个非常老的delphi迁移到delphi 2010的经验吗?

migration delphi unicode

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

在MSTest中的运行时期间动态创建单元测试方法

在MSTest中是否有相当于SuiteBuilder的东西?到目前为止找不到一个.

我有一堆xml文件,每个文件都被视为映射到测试方法.因为有100个这样的并且为这些中的每一个手动编写测试,所以不是一个好主意.

因此,在nunit中,您可以实现ISuiteBuilder并让测试用例动态运行并显示为许多测试方法.

我正在寻找一种在MSTest中做同样事情的方法.

我查看了DataSource属性,但它满足每个测试方法1个数据源xml文件/ csv,迫使我编写100多个测试方法.我还希望将每个xml文件保持独立,并且不要将它们全部归入到一个巨大的文件中,在这种情况下它将变得不可维护.

有人试过这个或有任何建议吗?

nunit unit-testing mstest

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

WPF窗口预加载

在我的全屏WPF应用程序中切换窗口时,如果是第一次显示屏幕,显示器将在显示窗口之前暂时变黑.这仅在第一次显示窗口时发生.有没有办法预加载每个窗口,所以这不会发生?

这就是我尝试过的:

myWindow.Show();
myWindow.Hide();
Run Code Online (Sandbox Code Playgroud)

但是有一个明显的闪烁.

然后我尝试了:

myWindow.Height = 0;
myWindow.Width = 0;
myWindow.WindowState = WindowState.Normal;
myWindow.Show();
myWindow.Hide();
myWindow.Height = Screen.PrimaryScreen.Bounds.Height;
myWindow.Width = Screen.PrimaryScreen.Bounds.Width;
myWindow.WindowState = WindowState.Maximized;
Run Code Online (Sandbox Code Playgroud)

没有闪烁,但当我然后显示窗口时,它显示自己处于奇怪的状态一瞬间然后更新以正确显示.

c# wpf window

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

如何从 Javascript 访问表单下拉列表

有没有办法使用 JavaScript 访问下拉选项文本?

例如,我可以通过执行以下操作来访问该值:

document.getElementById("transFrom").value;
Run Code Online (Sandbox Code Playgroud)

但我想要选项标签之间的文本。

以下是表单下拉列表的 HTML:

  <select name="transFrom" id="transFrom" style="width: 300px;" tabindex="1"  onfocus="return validate_field(this)" onchange="return validate_field(this)">
          <option value="">Select An Account</option>
          <option value="S">Savings</option>
          <option value="C">Checking</option>
          <option value="M">Money Market</option>
    </select>
Run Code Online (Sandbox Code Playgroud)

html javascript drop-down-menu

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

如何最优雅地迭代C#中的并行集合?

        var a = new Collection<string> {"a", "b", "c"};
        var b = new Collection<int> { 1, 2, 3 };
Run Code Online (Sandbox Code Playgroud)

迭代两者产生一组结果"a1","b2","c3"的最优雅方式是什么?

.net linq puzzle collections c#-3.0

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

C++通过引用传递指针并分配默认值

我想通过引用一个函数传递一个指针,这样我实际上可以改变传递指针所指向的地址,并且我想为这个参数赋一个默认值.

这样的事情:

在声明中

void myFunc(SomeType* &var=NULL);
Run Code Online (Sandbox Code Playgroud)

和定义:

void MyClass::myFunc(SomeType* &var){
    if(var!=NULL)
        (*var)=(*someOtherPointer);

    if(someCondition)
        var=NULL;
}
Run Code Online (Sandbox Code Playgroud)

这样被调用者可以决定是否要用一个参数或没有参数调用该函数.并且如果他决定传递一个参数,并且someCondition成立,则传递的指针将在之后指向NULL

然而 - 如果我尝试这样做我得到一个:

错误C2440:'默认参数':'int'无法转换为'SomeType*&'

谢谢您的帮助!

c++ pointers reference default-value

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

为什么XMLHttpRequest的原始策略相同

为什么浏览器将相同的源策略应用于XMLHttpRequest?它对开发人员来说真的很不方便,但它似乎在实际阻止黑客方面做得很少.有解决方法,它们仍然可以包含来自外部源的javascript(JSONP背后的力量).

这似乎是网络中过时的"功能",它在很大程度上是相互关联的.

security jsonp javascript-security

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

在iPhone SDK中使用字符串和变量

我在这里有一个字符串:

textbox.text =@"Your name is" 
Run Code Online (Sandbox Code Playgroud)

然后我想在"你的名字是"一个显示文本的变量之后添加.

所以在Visual Basic中我学到了这样:

textbox.text =@"Your name is" & variable1.
Run Code Online (Sandbox Code Playgroud)

但现在我可以看到它在Cocoa中不起作用.

string iphone variables cocoa-touch

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

如何使用cscript.exe获取WSH脚本的STDIN输入?

我正在尝试使用WSH代替DOS/Batch文件.

感谢您的投入!

wsh

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