这两个表达
y >> pure x
liftM (const x) y
Run Code Online (Sandbox Code Playgroud)
在Haskell中具有相同的类型签名。我很好奇它们是否相等,但是我既不能提供事实的证明,也不能提出反驳的例子。
如果我们重写这两个表达式以便消除x,y则问题就变成以下两个函数是否等效
flip (>>) . pure
liftM . const
Run Code Online (Sandbox Code Playgroud)
请注意,这两个函数都具有type Monad m => a -> m b -> m a。
我使用了Haskell为monad,applicatives和functor给出的定律,将这两个陈述转换为各种等效形式,但是我无法在两者之间产生一系列等效关系。
例如我发现y >> pure x可以重写如下
y >>= const (pure x)
y *> pure x
(id <$ y) <*> pure x
fmap (const id) y <*> pure x
Run Code Online (Sandbox Code Playgroud)
并且liftM (const x) y可以如下重写
fmap (const x) y
pure (const x) <*> y
Run Code Online (Sandbox Code Playgroud)
这些对我来说并没有必然是等同的,但我无法想到在任何情况下它们都不等同。
我在一个Android应用程序上工作,我非常有兴趣使用volley库来执行网络http调用.
但我的问题是我发现这个库在不同的后台线程中进行操作然后我怎么能显示ProgressDialog何时http请求开始执行然后在执行后解除它.
RequestQueue rq = Volley.newRequestQueue(this);
StringRequest postReq = new StringRequest(Request.Method.POST, "http://httpbin.org/post", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
tv.setText(response); // We set the response data in the TextView
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
System.out.println("Error ["+error+"]");
}
});
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我正在使用 Apache Commons CLI 1.2 来解析最后带有选项和额外参数的命令行。前任:mycmd -d DIR extra stuff
我知道如何使用 获取“额外”和“东西” CommandLine.getArgs(),但我不知道如何在帮助输出中显示这些额外参数。当我拨打这样的电话时:
new HelpFormatter().printHelp("mycmd", opts, true);
Run Code Online (Sandbox Code Playgroud)
我得到的输出如下:
usage: mycmd -d DIR
Run Code Online (Sandbox Code Playgroud)
没有额外的参数。有人能指出我正确的方向吗?
我想填充一个数组,所以我可以将结果附加到a TextView,但应用程序不断崩溃:
04-02 23:45:29.286: E/AndroidRuntime(6620): FATAL EXCEPTION: AsyncTask #3
04-02 23:45:29.286: E/AndroidRuntime(6620): java.lang.RuntimeException: An error occured while executing doInBackground()
04-02 23:45:29.286: E/AndroidRuntime(6620): at android.os.AsyncTask$3.done(AsyncTask.java:200)
04-02 23:45:29.286: E/AndroidRuntime(6620): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
04-02 23:45:29.286: E/AndroidRuntime(6620): at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
04-02 23:45:29.286: E/AndroidRuntime(6620): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
04-02 23:45:29.286: E/AndroidRuntime(6620): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
04-02 23:45:29.286: E/AndroidRuntime(6620): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
04-02 23:45:29.286: E/AndroidRuntime(6620): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
04-02 23:45:29.286: E/AndroidRuntime(6620): at java.lang.Thread.run(Thread.java:1019)
04-02 23:45:29.286: E/AndroidRuntime(6620): Caused by: java.lang.NullPointerException
04-02 23:45:29.286: E/AndroidRuntime(6620): at com.gettford.community.MessageActivity$Mensajes.doInBackground(MessageActivity.java:166)
04-02 23:45:29.286: E/AndroidRuntime(6620): at com.gettford.community.MessageActivity$Mensajes.doInBackground(MessageActivity.java:1)
04-02 23:45:29.286: E/AndroidRuntime(6620): at …Run Code Online (Sandbox Code Playgroud)