像Nemerle这样的语言支持和弦的概念。我想知道它们的实际用途是什么。
尝试使用Nemerle计算表达式:
https://code.google.com/p/nemerle/source/browse/nemerle/trunk/snippets/ComputationExpressions/
以下是一些示例:
def upTo (n : int)
{
comp enumerable
{
mutable i = 0;
while (i < n)
{
i ++;
yield i
}
}
}
def manyTimes : IEnumerable [int] =
comp enumerable
{
yieldcomp upTo(2); // 1 2
yield 100; // 100
yieldcomp upTo(3); // 1 2 3
yield 100; // 100
yieldcomp upTo(10); // 1 2 3 .. 10
}
def fn(n)
{
comp async
{
if (n < 20)
returncomp fn(n + 1);
else
return n;
}
}
def f(n1, n2)
{
comp async
{
defcomp n1 = fn(n1);
defcomp n2 = fn(n2);
return $"$n1 $n2";
}
}
private HttpGet(url : string) : Async[string]
{
comp async
{
def req = WebRequest.Create(url);
using (defcomp resp = req.AsyncGetResponse())
using (stream = resp.GetResponseStream())
using (reader = StreamReader(stream))
return reader.ReadToEnd();
}
}
根据[Wikipedia](http://en.wikipedia.org/wiki/Chord_(concurrency))的说法,这种构造在Cω语言(以及Polyphonic C#)中似乎也存在。
和弦的主要用途似乎涉及数据库编程(更具体地说,是join calculus),这并不奇怪,因为它是一种并发构造。除此之外,我恐怕不太清楚。