jjzjj

multithreading - 在 Haskell 中使用共享套接字的多线程

在Haskell中,同一个套接字可以在两个线程之间共享吗?本质上,我想做的是创建一个线程来写入套接字,另一个线程从套接字读取。读取线程将是一个不断等待、监视和获取套接字生成的任何消息的循环。另一个线程(写入线程)将代码发送到套接字。请指教。 最佳答案 是的,这是允许的。 关于multithreading-在Haskell中使用共享套接字的多线程,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/ques

sockets - Haskell tcp 服务器,fd 错误太大

我一直在尝试为Go客户端编写一个Haskell服务器。对于HaskellTCP服务器,我只是使用Network.Socket。每当我尝试运行hWaitForInput时,我都会收到此错误:fdReady:fdistoobig.这是服务器代码-connHandler::(Socket,SockAddr)->IO()connHandler(sock,_)=doputStrLn"StartingHandler"handleGo客户端正在接收并打印服务器的消息(“HelloClient!”)但是haskell服务器在打印“等待输入”后立即抛出错误 最佳答案

haskell - 使用网络管道时如何刷新网络流?

我正在尝试使用network-conduit作为(修补的)HaskellNet的后端IMAP.如何强制管道冲洗水流?这是requiredoperation,但在network-conduit中似乎没有这样的东西。 最佳答案 network-conduit应该在您每次向它发送ByteString时刷新流,特别是不包括缓冲,因为它会被blaze-之类的东西处理builder-conduit正交。您是否看到了与之相矛盾的行为? 关于haskell-使用网络管道时如何刷新网络流?,我们在Stac

macos - 异常 : connect: does not exist (Connection refused) when trying to connect to TCP socket in Haskell

上下文我正在关注tutorialonwritingaTCPserverlastweekinRealWorldHaskell.一切顺利,我的最终版本可以正常工作,并且能够在TCP客户端和服务器之间发送消息。然后,我想为我编写的一个小型TicTacToe游戏编写自己的TCP服务器。我开始编写服务器和客户端并进行了一些尝试,到目前为止它工作正常,服务器能够接受连接,但还没有真正的交互。现在有点尴尬了,因为在我关闭我的Mac并尝试重新启动它之后,它再也无法启动了。我整个星期五都在忙于从单用户模式进行备份并重新安装Mac操作系统。重新安装成功后,我所有的数据都还在,所以我根本不需要备份。无论如何

haskell - 在同一个端口上监听 TCP 和 UDP

如何让Haskell在同一个端口上监听UDP和TCP?这是我目前的代码(基于acme-http):listenOnportm=doprotoTCPdosetSocketOptionsockReuseAddr1setSocketOptionsockNoDelay1bindSocketsock(SockAddrInet(fromIntegralportm)iNADDR_ANY)listensock(max1024maxListenQueue)returnsock)protoUDPdosetSocketOptionsockReuseAddr1bindSocketsock(SockAddrIn

haskell - 在 Haskell 中,如何在 Web 客户端断开连接时中止计算

我有一个基于Haskell的网络服务,它执行的计算对于某些输入可能需要很长时间才能完成。(这里的“真长”是指超过一分钟)因为执行该计算会占用服务器上所有可用的CPU,所以当传入请求到达时,我将它们放入队列中(好吧,实际上是一个堆栈,原因与典型客户端有关,但这不是重点)在当前运行的计算完成时为它们提供服务。我的问题是客户端并不总是等待足够长的时间,有时会在他们端超时、断开连接并尝试使用不同的服务器(好吧,他们再次尝试并遇到了elb,通常会得到不同的实例).此外,有时Web客户端要求的计算会由于外部因素而变得过时,并且Web客户端将被终止。在那些情况下,我真的希望能够在我从堆栈中拉出下一个

swift - 如何在 swift 中为 HKT 声明协议(protocol)?

在Haskell中,当使用typeclass时,很容易声明其“实例”类型种类的约束。classFunctor(f::*->*)where...*->*表示HKT(Higher-KindedTypes),这意味着任何符合Functor的类型都必须是HKT。如何使用Swift的protocol实现这一点? 最佳答案 Swift本身不支持HKT作为类型形式,但你可以使用associatedtype的技巧来模拟约束:publicprotocolFunctor{///(*->*)associatedtypeFA:Functor=Self///

swift - Swift 中类似 Haskell 的模式?

Swift有没有类似于Haskell的as-patterns的东西?用于模式匹配?我试图通过使用嵌套模式摆脱以下代码段中的第二个switch语句:indirectenumType:CustomStringConvertible{caseIntcaseFun(Type,Type)vardescription:String{switchself{case.Int:return"int"case.Fun(letp,letr):switchp{case.Fun(_):return"(\(p))->\(r)"case_:return"\(p)->\(r)"}}}}Type.Int//"int"T

java - Java 中类似 ADT 的多态性(不改变类)

在Haskell中,我可以定义以下数据类型:dataTree=Empty|LeafInt|NodeTreeTree然后像这样写多态函数:depth::Tree->IntdepthEmpty=0depth(Leafn)=1depth(Nodelr)=1+max(depthl)(depthr)在Java中,我可以用接口(interface)模拟代数数据类型:interfaceTree{}classEmptyimplementsTree{}classLeafimplementsTree{intn;}classNodeimplementsTree{Treel;Treer;}但是如果我尝试使用类

java - Agitar 和基于 Quickcheck 属性的测试有什么区别?

几年前,一个名为Agitar的Java测试工具很受欢迎。它似乎在做一些类似于基于属性的测试。如今-基于属性的测试基于Haskell'sQuickcheck很受欢迎。Java有许多端口,包括:quickcheckjcheckjunit-quickcheck我的问题是:Agitar和基于Quickcheck属性的测试有什么区别? 最佳答案 对我来说,HaskellQuickCheck的主要特性是:它生成用于测试的随机数据如果测试失败,它会反复“收缩”数据(例如,将数字更改为零,减少列表的大小)直到它找到仍然失败的最简单的测试用例。这非常