我正在尝试从客户端到服务器进行基本的JSON通信,使用以下Elm代码:
import open Http
result res = case res of
Success a -> a
Waiting -> "Waiting"
Failure n a-> "Failure " ++ (show n) ++ " " ++ (show a)
main = lift asText <| lift (show . result) <| send <| constant <| post "http://localhost:3000" "{foo : true}"
Run Code Online (Sandbox Code Playgroud)
服务器完全如Yesod书的这一部分所示.
但是,当我运行请求时,我得到了输出
"\"Failure 0 []\""
Run Code Online (Sandbox Code Playgroud)
有没有人知道我要做些什么来让Elm客户端与Yesod服务器正常通信?我尝试过一个Python客户端,请求工作得很好.同样,在Yesod网站上有几个成功的Http请求的例子,所以我相信两个库都正常工作,但我使用它们是错误的.
更新:问题是客户端.我能够使用Chrome并禁用安全选项,并且不对Yesod进行任何更改.我会寻找一种解决方法,但这至少足以让我的开发继续下去.
所以,我有一个多线程的python程序,目前正遭遇死锁.我打算通过子类化threading.Lock对象来记录锁获取:
import traceback
class DebugLock(threading.Lock):
def acquire(self):
print >>sys.stderr, "acquired", self
#traceback.print_tb
threading.Lock.acquire(self)
def release(self):
print >>sys.stderr, "released", self
#traceback.print_tb
threading.Lock.release(self)
Run Code Online (Sandbox Code Playgroud)
当我尝试运行该程序时,我收到以下错误:
class DebugLock(threading.Lock):
TypeError: Error when calling the metaclass bases
cannot create 'builtin_function_or_method' instances
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是双重的:
是否可以将Lock对象子类化为我正在做的事情?
如果没有,在python中调试死锁的最佳方法是什么?
注意:我没有编写任何Python扩展.有一个类似的问题:如何使用python调试死锁? 但是,它涉及编译C++代码和使用GDB,因为我的代码是纯Python,所以我无法做到.
我想知道是否有人可以解释Haskell websocket库之间的差异以及它们如何与Yesod一起工作.
我要介绍的两个主要示例是Network.Websockets和wai websockets包的教程.
我无法为wai包找到一个好的例子或教程.既然yesod使用wai,它对简单的网络有什么优势呢?它是否意味着用于代替Network.Websockets或与Network.Websockets结合使用?
我见过一些例子,但我无法理解他们如何真正融入yesod环境.如果有人可以解释websockets如何与处理程序和IO相关联,那么在Yesod中,这将是很好的.
注意:我已经看到了这个问题和这个问题,但我无法理解如何应用它们,因为它们实际上没有解释websockets适合Yesod的位置.
Monadic一阶逻辑,其中所有谓词都恰好采用一个参数,是一阶逻辑的已知可判定片段。测试公式是否可以满足此逻辑是可以确定的,并且存在基于分辨率的方法来确定这一点。
我处于需要测试一些单子一阶逻辑语句的可满足性的情况。我意识到我将达到理论上的复杂性极限,但我希望在常见情况下能够获得合理的性能。
现在,存在大量的定理证明,它们提供了解决一阶逻辑问题的快速方法。其中包括Vampire,SPASS,E,以及Z3和CVC4的量词扩展。但是,由于不确定性,不能保证它们停止运行。
我的问题
在现有的定理证明者中,有谁能保证在给定单子式公式作为输入时停止?还是有一种方法可以使用它们(以某种方式)有效地测试单子公式的可满足性?
formal-verification proof theorem-proving first-order-logic smt
我有一个应用程序,由于各种原因,我需要运行任意的,用户提供的代码.(SafeHaskell使这很好,更安全).我看过插件包,非常适合从光盘上的.hi文件加载.
但是,对于我的程序设计,如果我可以将这些用户程序存储在数据库中,然后将它们直接编译为我可以在程序中使用的函数,那将是理想的.
因此,如果我正在编译的函数具有以下类型:
someFunction :: MyIn -> MyOut
Run Code Online (Sandbox Code Playgroud)
我正在寻找一些将从字符串生成该函数的函数:
hotCompile :: String -> IO (MyIn -> MyOut)
Run Code Online (Sandbox Code Playgroud)
其中string包含"someFunction"的haskell代码.
有没有人知道是否有办法做到这一点,最好使用插件包?我稍微遇到过GHC API,但我不太了解它以及它与此有何关系.
请注意,我已经尝试过提示,但它不适合我的应用程序,因为它不是线程安全的.
所以,我正在尝试使用Plugins包从源文件动态加载haskell函数.源文件取决于foo具有模块的包Foo.Bar.我正在我foo安装的Cabal沙箱中运行我的项目.我的主程序和我用插件加载的模块都依赖于foo.我总是得到以下两个错误之一:
当我foo安装~/.cabal,我收到错误:
GHCi runtime linker: fatal error: I found a duplicate definition for symbol
aizmvszmaizmlibzm0zi1_FooziBar_zdfTypeableBazzuds2_closure
whilst processing object file
/home/joey/.cabal/lib/foo-0.1/ghc-7.6.3/HSfoo-0.1.o
This could be caused by:
* Loading two different object files which export the same symbol
* Specifying the same object file twice on the GHCi command line
* An incorrect `package.conf' entry, causing some object to be
loaded twice.
GHCi cannot safely continue in this situation. Exiting …Run Code Online (Sandbox Code Playgroud) 我想知道,是否可以限制线程使用的内存量?我正在寻找运行服务器,其中提交并运行不受信任的用户代码.我可以使用SafeHaskell来确保它不执行任何未经授权的IO,但我需要确保用户的代码不会使整个服务器崩溃,即通过导致堆栈溢出或内存不足堆错误.
有没有办法限制每个单独线程可以访问的内存量,或者某种方式确保如果一个线程占用大量内存,那么只有该线程被终止?
也许有一种方法,当任何线程遇到内存不足错误时,我可以捕获异常并选择哪个线程死掉?
我更多地谈论并发性,在forkIO和STM线程的意义上,而不是par和seq的并行性.
注意:这与这个问题非常相似,但它从未得到一般问题的答案,而是答案涉及问题的具体情景.此外,自2011年以来,有可能在GHC 7.8中有所改变,可能是新的IO经理?
我正在尝试使用node.js运行使用GHCJS构建的程序.但是,我收到以下错误:
SyntaxError: Too many variables declared (only 131071 allowed)
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3
Run Code Online (Sandbox Code Playgroud)
请注意,这是机器生成的JS,因此我不希望手动完成并减少变量的数量.
欢迎任何想法.
我有一个如下定义的类型族:
type family Vec a (n :: Nat) where
Vec a Z = a
Vec a (S n) = (a, Vec a n)
Run Code Online (Sandbox Code Playgroud)
我想断言,应用此类型族的结果始终满足SBV包中的SymVal类约束:
forall a . (SymVal a) => SymVal (Vec a n)
Run Code Online (Sandbox Code Playgroud)
存在SymVal实例a,b,因此对于的任何值,只要SymVal a保留,就SymVal (Vec a n)应保留n。我如何确保GHC认为SymVal始终针对类型系列应用程序的结果实现该功能?
但是,我不知道该如何表达。我要写一个实例吗?派生子句?我不是在创建新的类型,只是将数字映射到现有的数字。
还是我完全走错了轨道?我应该使用数据系列还是功能依赖项?
我正在编写一个在线游戏,我在服务器端后端使用Haskell,在前端/渲染时使用Elm.
现在我把我的GameState作为一个大的ADT,这个类型很简单,我也可以在Elm中使用它.我希望避免使用JSON,并简单地将Elm输出"show"输出到数据上,然后我可以将其解析回Elm中的ADT.
我想知道,有没有相当于haskell的"读取",它可以自动查看show输出的字符串,并将其解析回数据?如果没有,是否有任何现有的解析器库可供Elm使用?
如果我最终使用JSON,有没有办法自动将其转换为ADT?(或许类似于Aeson的FromJSON?)