小编J C*_*per的帖子

相互递归 - 有人可以帮助解释这段代码是如何工作的吗?

我正在阅读"对Haskell的一个温和的介绍",并且在早期它使用了这个例子,它在GHC中运行良好,在我的大脑中可怕:

initial                 = 0
next resp               = resp
process req             = req+1

reqs                    = client initial resps
resps                   = server reqs

server          (req:reqs)   = process req : server reqs
client initial ~(resp:resps) = initial : client (next resp) resps
Run Code Online (Sandbox Code Playgroud)

和调用代码:
take 10 reqs

我是如何看到它的,被reqs称为,client使用args 0和0 进行调用resps.因此resps现在不需要被调用......反过来reqs再次调用?这一切似乎都是无限的......如果有人能够详细说明它是如何运作的,我会非常感激!

recursion haskell

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

寻求人为的示例代码:延续!

所以我相信我现在理解延续,至少在某种程度上,这要归功于Fixnum Days中社区方案wikiLearn Scheme.

但是我想要更多的练习 - 也就是说,我可以通过更多的示例代码在我脑海中完成(最好是做作,所以没有多余的东西可以分散注意力).

具体来说,我想解决更多关于继续恢复和/或协同程序的问题,而不是仅使用它们来退出循环或其他任何东西(这是相当简单的).

无论如何,如果你知道除了我上面提到的那些教程之外的好教程,或者如果你想发布你写的那些将是一个很好的练习的东西,我会非常感激!

scheme continuations coroutine

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

以编程方式在TFS中添加新迭代

我可以通过右键单击项目并转到"团队项目设置">"区域和迭代">"迭代"选项卡,手动将新迭代添加到TFS中的团队项目.

有没有关于如何使用他们的API以编程方式执行此操作的示例?

谢谢!

c# tfs tfs-sdk

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

是否建议在我的公共接口中指定例如vector <t>?

我是C++的新手,在编写课程时,我意识到我的一个方法是要求矢量矢量.应该这样做还是我应该重新考虑我班级的界面?(怎么样?)

c++ architecture

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

Ada中的蜱或撇号是什么?

非常基本的问题,但只是阅读源代码并试图告诉'它是什么以及它与之不同.

syntax ada operators

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

州Monads:交换另一种模式?

所以我正在Haskell中编写一个游戏,我将玩家视为一系列与各种转弯阶段相关的状态改变函数.最初,这看起来像:

let game'  = phase1 game
    game'' = phase2 game'
-- etc.
Run Code Online (Sandbox Code Playgroud)

国家monadosity的主要候选人,对吧?这导致更优雅:

do
  phase1
  phase2
-- etc.
Run Code Online (Sandbox Code Playgroud)

然而,似乎我必须改变phase1,phase2等等以一个样板"状态获取"步骤开始:

phase1 = get >>= \game -> -- ...
Run Code Online (Sandbox Code Playgroud)

我希望有一种方法可以抽象出来,所以我可以避免调用者和被调用者都使用样板文件.我太新了,不知道这是什么方式(这是我的第一个真正的Haskell项目).有什么建议?

monads haskell abstraction boilerplate state-monad

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

C#代码合同:为什么不能证明这个简单的条件?

我正在对代码合同进行简单的测试.以下代码处于winform状态.这通过(当然):

    private void Test(Form form)
    {
        Contract.Requires(!string.IsNullOrEmpty(form.Name));

        MessageBox.Show(form.Name);
    }

    protected override void OnLoad(EventArgs e)
    {
        if (!string.IsNullOrEmpty(Name))
            Test(this);

        base.OnLoad(e);
    }
Run Code Online (Sandbox Code Playgroud)

但是,我只添加了一个非常简单的间接层,它说"需要未经证实":

    private bool Valid(string str)
    {
        return !string.IsNullOrEmpty(str);
    }

    protected override void OnLoad(EventArgs e)
    {
        if (Valid(Name))
            Test(this);

        base.OnLoad(e);
    }
Run Code Online (Sandbox Code Playgroud)

这似乎证明是微不足道的.为什么不工作?

c# code-contracts

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

防止std :: vector在push_back上调整大小

我有一个std :: vector,我知道它永远不会增长 - 它总是有n元素(遗憾的n是,在编译时不知道所以我不能使用std :: array).我可以:

std::vector<blah> v(n);
Run Code Online (Sandbox Code Playgroud)

哪个正确设置其容量n.但是当我继续填写vpush_back,它会自动调整大小2n.

我意识到这是不成熟的优化,但它让我烦恼.有没有办法设置最大尺寸或什么?

c++ stl

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

什么构成J动词的数组参数的"兼容形状"?

我在学习(和有我的脑中吹)J和阅读的过程中学习Ĵ.我注意到我一直在学习的许多(全部?)动词都非常灵活.我可以做传统的4 - 2,或者我可以使用它与列表,例如4 5 - 3 4,甚至可以做到3 4 5 - 1这似乎"促进"运算符的右侧到阵列,即使我只是给它一个标量.

我假设后一行为被ch包含在这一行中.上述文字中的2个:

因此,=的两个参数必须具有相同的形状(或者至少,如在Y = 2的示例中,兼容的形状).否则会导致错误.

的确,这3 4 5 - 2 3是一个错误."兼容形状"的技术定义是什么?它是否像"相同的形状或标量"一样简单,还是更多呢?

arrays arguments j

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

为什么我的错误注释这种类型的签名不会破坏事情?

我已经为函数定义了一个别名execState:

myCleverName = execState
Run Code Online (Sandbox Code Playgroud)

GHC警告说顶级绑定没有带注释的类型签名,所以我写道:

myCleverName :: State s a => s -> s
Run Code Online (Sandbox Code Playgroud)

对大多数人来说,很明显,"胖箭" =>应该是一个经常瘦的->.但是我今天才注意到,但是包含别名的模块和使用别名的代码都已编译好几周,而不是警告我使用了错误的语法.这是为什么?

谢谢!

syntax haskell types

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