小编Dar*_*rio的帖子

如何在单元测试中建模并发?

我对单元测试很陌生,目前正在尝试使用Visual Studio的测试工具.

我的问题是如何在这些测试中定义关于并发行为的断言.例如,给定一个BoundedChan<T>实现有界通道的类,我如何指定测试

  1. " channel.Send不会阻止"或
  2. "如果超出了频道的容量,channel.Send将阻止直到读取一个值"

编写这些断言是否有优雅的解决方案?

c# concurrency unit-testing visual-studio

14
推荐指数
2
解决办法
4710
查看次数

哪种编程语言的语法最少?

哪种编程语言的语法最少?如何计算编程语言的语法数量?

谢谢.

syntax programming-languages

11
推荐指数
5
解决办法
7846
查看次数

在翻译中使用monads有什么意义?

我最近发现了这个使用monads的名为Simple interpreter的scala示例:

object simpleInterpreter {

  case class M[A](value: A) {
    def bind[B](k: A => M[B]): M[B] =  k(value)
    def map[B](f: A => B): M[B] =  bind(x => unitM(f(x)))
    def flatMap[B](f: A => M[B]): M[B] = bind(f)
  }

  def unitM[A](a: A): M[A] = M(a)

  def showM(m: M[Value]): String = m.value.toString();

  type Name = String

  trait Term;
  case class Var(x: Name) extends Term
  case class Con(n: int) extends Term
  case class Add(l: Term, r: Term) extends Term …
Run Code Online (Sandbox Code Playgroud)

monads functional-programming scala

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

在值构造函数中指定类约束

有没有办法为值构造函数的参数定义类约束?

像这样的东西:

data Point2D = (Num a) => Point a a
Run Code Online (Sandbox Code Playgroud)

只要它们属于Num类,Point就可以接受任何参数?

constructor haskell functional-programming

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

如何使这些动态类型的函数类型安全?

是否有任何编程语言(或类型系统),您可以在其中以静态类型和类型安全的方式表达以下Python函数(不必使用强制转换,运行时检查等)?

#1:

# My function - What would its type be? 
def Apply(x):
    return x(x)

# Example usage
print Apply(lambda _: 42)
Run Code Online (Sandbox Code Playgroud)

#2:

white = None
black = None

def White():
    for x in xrange(1, 10):
        print ("White move #%s" % x)
        yield black

def Black():
    for x in xrange(1, 10):
        print ("Black move #%s" % x)
        yield white

white = White()
black = Black()

# What would the type of the iterator objects be?
for it in …
Run Code Online (Sandbox Code Playgroud)

python language-agnostic type-theory

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

单位安全的平方根

我只是想知道如何以与F#单位系统正确交互的方式编写用户定义的平方根函数(sqrt).

应该是什么样的:

let sqrt (x : float<'u ^ 2>) =
    let x' = x / 1.0<'u ^ 2> // Delete unit
    (x ** 0.5) * 1.0<'u>     // Reassign unit

但由于非零常量不允许使用通用单位,因此不允许这样做.

有没有办法写这个功能?内置sqrt它工作正常,它有什么神奇的表现?

math f# functional-programming units-of-measurement

9
推荐指数
2
解决办法
494
查看次数

迭代列表列表?

我有来自某个来源的物品(来自其他地方):

public class ItemsFromSource{
    public ItemsFromSource(string name){
        this.SourceName = name;
        Items = new List<IItem>();
    }

    public string SourceName;
    public List<IItem> Items;
}
Run Code Online (Sandbox Code Playgroud)

现在在MyClass中,我有来自多个来源的项目(从其他地方填充):

public class MyClass{
    public MyClass(){
    }

    public List<ItemsFromSource> BunchOfItems;
}
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以一次遍历BunchOfItems中所有ItemsFromSources中的所有Items?即,像:

foreach(IItem i in BunchOfItems.AllItems()){
    // do something with i
}
Run Code Online (Sandbox Code Playgroud)

而不是做

foreach(ItemsFromSource ifs in BunchOffItems){
    foreach(IItem i in ifs){
        //do something with i
    }
}
Run Code Online (Sandbox Code Playgroud)

c# silverlight functional-programming list

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

C#中的虚方法或事件

我目前正在编写一个小C#库来简化实现很少的物理模拟/实验.

主要组件是在SimulationForm内部运行定时器循环并从用户隐藏样板代码.实验本身将通过三种方法定义:

  1. Init() (初始化一切)
  2. Render(Graphics g) (渲染当前模拟状态)
  3. Move(double dt)(移动实验dt几秒钟)

我只是想知道让用户实现这些功能的更好选择是什么:

1)由继承表单覆盖的虚拟方法

protected virtual void Init() {} 
...
Run Code Online (Sandbox Code Playgroud)

要么

2)事件

public event EventHandler<MoveSimulationEventArgs> Move = ...
...
Run Code Online (Sandbox Code Playgroud)

编辑:请注意,方法不应该是抽象的.其实,还有更和他们都不具有实施.由于许多模拟不需要它们,因此将它们放在外面通常很方便.

关于这是一个"正常形式"的酷事是你可以写

partial class frmMyExperiment : SimulationForm {
}
Run Code Online (Sandbox Code Playgroud)

并且您完全能够与设计器和所有继承的控件和设置/属性进行交互.我不想通过采用完全不同的方法来失去这些功能.

c# design-patterns

9
推荐指数
3
解决办法
1612
查看次数

Haskell n-ary树遍历

我对Haskell很新,我正在努力研究如何遍历一棵n-ary树.作为输出,我希望获得Leaf值列表(因为分支没有值),因此对于testtree,这将是:4,5

到目前为止我的定义是:

data Tree a = Leaf a | Branch [Tree a] deriving (Show)

travTree                    :: Tree a -> [a]
travTree (Leaf x)           = [x]
travTree (Branch (x:xs))    = travTree x : travTree xs

testtree = Branch [(Leaf "4"), (Leaf "5")]
Run Code Online (Sandbox Code Playgroud)

但它给出了错误:

Couldn't match expected type `Tree a'
  against inferred type `[Tree a]'
In the first argument of `travTree', namely `xs'
In the second argument of `(:)', namely `travTree xs'
In the expression: travTree x : travTree xs
Run Code Online (Sandbox Code Playgroud)

我假设这是因为xs是一个树列表,它期待一棵奇异的树.有没有办法做到这一点?我一直在尝试地图功能,顺序如下:

travTree …
Run Code Online (Sandbox Code Playgroud)

tree haskell functional-programming

9
推荐指数
3
解决办法
2726
查看次数

函数式编程中的无限循环?

  • 我想知道:在函数式编程中可以完成无限循环吗?

示例:当使用Windows API获取Windows消息时,通常在循环中实现.

我知道有可能创建一个将无限期地进入递归的函数.我希望这会导致堆栈溢出.

  • 无限循环错误的功能编程思维定势?

  • 是操作系统的接口还是硬件的问题?

在我看来,功能程序/操作系统似乎不能单独运行

我在编写功能程序方面有一点经验,但这一直困扰着我.请分享您对这些问题的想法/见解

recursion loops functional-programming

8
推荐指数
2
解决办法
2920
查看次数