aeson似乎采用了一种有点简单的方法来解析JSON:它将顶级JSON值(一个对象或数组)解析为它自己的固定表示,然后提供帮助用户将该表示转换为它们自己的工具.当JSON对象和数组很小时,这种方法非常有效.当它们非常大时,事情开始崩溃,因为在完全读取和解析JSON值之前,用户代码无法执行任何操作.这似乎特别不幸,因为JSON似乎是为递归下降解析器设计的 - 似乎应该相当简单,允许用户代码介入并说明每个部分应该如何解析.有没有深层原因aeson和早期的json工作方式,或者我应该尝试创建一个新库以进行更灵活的JSON解析?
我刚刚在haskell-cafe上问这个,但我想我也可以在这里问一下.以下Monad实例是否Backwards m有效?
{-# Language RecursiveDo #-}
import Control.Applicative.Backwards
import Control.Monad.Fix
instance MonadFix m => Monad (Backwards m) where
m >>= f = Backwards $
do
fin <- forwards (f int)
int <- forwards m
pure fin
Run Code Online (Sandbox Code Playgroud)
如果是这样,我还可以添加吗?
instance MonadFix m => MonadFix (Backwards m) where
mfix f = Backwards $ mfix (forwards . f)
Run Code Online (Sandbox Code Playgroud) 我目前正在实现一个红黑树数据结构来为应用程序执行一些优化.
在我的应用程序中,在给定的点上,我需要从树中删除小于或等于给定值的所有元素(您可以假设元素是整数).
我可以逐个删除这些元素,但我希望能有更快的东西.因此,我的问题是:如果我删除一个红黑树的整个子树,我怎么能修复树来恢复高度和颜色不变量?
我在godaddy共享主机上有一个Web应用程序.它是一个asp.net应用程序.一切正常,但是当我上传一些文件时,它会出现错误"拒绝访问路径'PATH'."
我尝试了几种方法,例如给予我从godaddy控制面板上传文件的文件夹的完全权限.
我也看过这篇文章并试图跟着他说:http://forums.asp.net/t/1052417.aspx/1
但没有帮助.
任何人都可以建议我那里有什么不对.它在IIS 7下.
我有一个需要同步到互联网的Android应用程序,但是一旦手机进入睡眠状态,我就无法访问互联网.它仅在用户使用"电池模式"时发生,当它在15分钟后关闭数据时.我写了一个测试应用程序,它打开了数据,但它仍然连接到服务器.
我尝试了什么:
在摩托罗拉Atrix Android 2.3.3上测试过.我不能依靠Wifi.在现实生活中,它将每周同步.我们怎样才能成功呢?
AlarmManager:
alarm_manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, AlarmReceiver.class);
PendingIntent pending = PendingIntent.getBroadcast(this, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
alarm_manager.setRepeating(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis(), 15000, pending);
Run Code Online (Sandbox Code Playgroud)
AlarmReceiver:
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("MYTAG", "RECEIVED getMobileDataEnabled: " + getMobileDataEnabled(context));
if (!isOnline(context)) {
Log.d("MYTAG", "NO INET");
if (turnOnInet(context)) {
Log.d("MYTAG", "INET IS ON");
}
}
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://xxx.xxx.xxx.xxx/ping/pong/moto/");
try {
List<NameValuePair> nameValuePairs = …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个聊天程序。我编写了代码,一切正常,当我使用我的计算机并使用 127.0.0.1 连接时,它仍然运行良好。我还成功地在我的笔记本电脑和我的电脑之间成功连接,它们在同一台路由器上运行。(我使用内部 IP 地址来执行此操作,10.0.0.3)。
现在我正在尝试在我的路由器和其他路由器之间建立连接。为此,我正在尝试连接到外部 IP 地址。我通过我的路由器完成端口转发部分,我还制作了一个静态 IP。当我运行代码时,我总是收到“连接被拒绝错误”。
这是代码:
主服务器.java:
import java.util.*;
import java.io.*;
import java.net.*;
public class MainServer {
private ArrayList<Socket> sockets;
public MainServer() {
ServerSocket server_socket;
try {
server_socket = new ServerSocket(5005);
sockets = new ArrayList<Socket>();
System.out.println("server is now running");
while(true) {
Socket socket = server_socket.accept();
sockets.add(socket);
try {
PrintWriter writer = new PrintWriter(socket.getOutputStream());
writer.println("---you are connected to the server---\r\n");
writer.flush();
} catch(Exception e) {e.printStackTrace();}
System.out.println("server connected to " + socket.getInetAddress());
Reader reader = new Reader(socket);
Thread …Run Code Online (Sandbox Code Playgroud) GHC有一个类型系统扩展的整个动物园:多参数类型类,功能依赖,秩n多态,存在类型,GADT,类型族,范围类型变量等等.哪些可能是最容易学习的?另外,这些功能是否以某种方式组合在一起,或者它们是否完全相同,可用于完全不同的目的?
所以,我想手动证明Maybe applicative的组成法则是:
u <*> (v <*> w) = pure (.) <*> u <*> v <*> w
Run Code Online (Sandbox Code Playgroud)
我用这些步骤证明了这一点:
u <*> (v <*> w) [Left hand side of the law]
= (Just f) <*> (v <*> w) [Assume u ~ Just f]
= fmap f (v <*> w)
= fmap f (Just g <*> w) [Assume v ~ Just g]
= fmap f (fmap g w)
= fmap (f . g) w
pure (.) <*> u <*> v <*> w [Right hand …Run Code Online (Sandbox Code Playgroud) 在Parallella上的GHCi 7.10.2下,我定义了一个Peg派生的数据类型Show.当我试图压缩两个Peg列表时,我遇到了分段错误.有人有任何线索吗?
sid@linaro-nano:~CIS192/hw_2$ ghci
GHCi, version 7.10.2: http://haskell.org/ghc/ :? for help
Prelude>
Prelude>
Prelude> data Peg = Red | Green deriving (Show)
Prelude> zip [Red, Red] [Green, Green]
[(Red,Green),(Segmentation fault
Run Code Online (Sandbox Code Playgroud) 我一直致力于在linear-baseSjoerd Visscher 开始的一些工作的基础上添加对泛型派生的支持。一般来说,泛型的性能可以达到预期的效果,但我遇到了递归类型(如列表)的问题,我不知道该怎么办。最简单的例子就是类Consumable。如果你不熟悉线性类型的东西,不要被它迷惑;这在这里几乎无关紧要。我们有
class Consumable a where
-- Read this as consume :: a -> (), but it's guaranteed to use
-- its argument exactly once.
consume :: a %1 -> ()
instance (Generic a, GConsumable (Rep a)) => Consumable (Generically a) where
consume (Generically x) = genericConsume x
genericConsume :: (Generic a, GConsumable (Rep a)) => a %1 -> ()
genericConsume = gconsume . from
{-# INLINEABLE genericConsume #-}
-- | A class for generic …Run Code Online (Sandbox Code Playgroud) haskell ×6
aeson ×1
algorithm ×1
android ×1
applicative ×1
asp.net ×1
binary-tree ×1
connection ×1
file-upload ×1
generics ×1
ghc ×1
java ×1
monads ×1
optimization ×1
parsing ×1
port ×1
sleep-mode ×1
sockets ×1
types ×1