什么(n+1)意思?我知道它们都是递归的Haskell函数,并且正在使用模式匹配.
我不明白它的模式匹配factorial (n+1)以及(n+1)RHS的模式匹配factorial =.
而drop功能为什么呢drop 0 xs = xs?那怎么样drop (n+1) [] = []?
--Example 1
factorial 0 = 1
factorial (n+1) = (n+1) * factorial n
--Example 2
drop :: Int -> [a] -> [a]
drop 0 xs = xs
drop (n+1) [] = []
drop (n+1) (_:xs) = drop n xs
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我在编译时遇到错误.
更新:感谢您指出正确的术语.我发现了这个n + k模式.由于自2010年以来已经删除了n + k个模式,我还发现了关于如何启用此模式的问题.
我试图想出一种方法(动态或实例)方法调用可以被动态代理拦截.我想将它作为c#扩展方法实现,但坚持如何为静态方法生成动态代理.
一些用法:
Repository.GetAll<T>().CacheForMinutes(10);
Repository.GetAll<T>().LogWhenErrorOccurs();
//or
var repo = new Repository();
repo.GetAll<T>().CacheForMinutes(10);
repo.GetAll<T>().LogWhenErrorOccurs();
Run Code Online (Sandbox Code Playgroud)
我对任何图书馆(linfu,castle.dynamic proxy 2等)开放.
谢谢!
我正在尝试执行以下操作:
EXECUTE sp_executesql
N'SELECT TOP 10 * FROM dbo.Items WHERE DateCreated BETWEEN @start AND @end'
, N'@start DATETIME, @end DATETIME'
, @start = '20091001'
, @end = GETDATE() --problem is caused by this line
Error:
Msg 102, Level 15, State 1, Line 5
Incorrect syntax near ')'.
Run Code Online (Sandbox Code Playgroud)
我需要操纵日期并将其作为参数传递,即一周的星期一,一年中的一个月等等.它甚至可能吗?
谢谢.
我很沮丧,试图使用Ruby来获取特定的url内容.
我尝试了许多不同的方式,比如open-uri,标准请求到目前为止都没有.我总是得到空的HTML.我还尝试使用python来获取始终返回正确html内容的相同url.我真的不确定为什么......请帮助我,因为我对Ruby和Python都是新手... 我想使用Ruby(更喜欢整洁的语法和人性化的函数名称,更容易使用gem和homebrew安装libs(在mac上) )比python easy_install)但我现在正在考虑Python,因为它只是工作(但仍然试图让我的头围绕2.x和3.x问题).我可能会做一些非常愚蠢的事情,但我认为这是不太可能的.
ruby 1.9.2p136 (2010-12-25 revision 30365) [i386-darwin10.6.0]
实施1:
url = URI.parse('http//:www.stackoverflow.com/') req = Net::HTTP::Get.new(url.path)
res = Net::HTTP.start(url.host, url.port) {|http| http.request(req) }
puts res.body #empty
Run Code Online (Sandbox Code Playgroud)
实施2:
doc = Nokogiri::HTML(open("http//:www.stackoverflow.com/", "User-Agent" => "Safari"))
#empty
#I tried to use without user agent, without Nokogiri none worked.
Run Code Online (Sandbox Code Playgroud)
Python实现每次都很完美
f = urllib.urlopen("http//:www.stackoverflow.com/")
# Read from the object, storing the page's contents in 's'.
s = f.read()
f.close()
print s
Run Code Online (Sandbox Code Playgroud) 我正在试验/学习新的Task库,我使用WebClient和Task.Run编写了一个非常简单的html下载器.但是我的网络使用率永远不会超过5%.我想了解为什么以及如何改进我的代码以达到100%的网络使用/吞吐量(可能不可能,但它必须超过5%).
我也希望能够限制线程的数量,但它似乎并不像我想象的那么容易(即自定义任务调度程序).有没有办法只做这样的事情来设置最大线程数:something.SetMaxThread(2)?
internal static class Program
{
private static void Main()
{
for (var i = 0; i < 1000000; i++)
{
Go(i, Thread.CurrentThread.ManagedThreadId);
}
Console.Read();
}
private static readonly Action<int, int> Go = (counter, threadId) => Task.Run(() =>
{
var stopwatch = new Stopwatch();
stopwatch.Start();
var webClient = new WebClient();
webClient.DownloadString(new Uri("http://stackoverflow.com"));
stopwatch.Stop();
Console.Write("{0} == {1} | ", threadId.ToString("D3"), Thread.CurrentThread.ManagedThreadId.ToString("D3"));
Console.WriteLine("{0}: {1}ms ", counter.ToString("D3"), stopwatch.ElapsedMilliseconds.ToString("D4"));
});
}
Run Code Online (Sandbox Code Playgroud)
这是@spender的异步版本.但是我的理解是await将"记住"该时间点并将下载切换到OS级别并跳过(2 console.write)并立即返回main并继续在for循环中调度剩余的Go方法.我理解正确吗?因此UI上没有阻止.
private static async void Go(int counter, int threadId)
{
using …Run Code Online (Sandbox Code Playgroud) c# ×2
aop ×1
concurrency ×1
haskell ×1
http ×1
python ×1
ruby ×1
sql ×1
sql-server ×1
syntax ×1
url ×1
web-crawler ×1