小编jmi*_*ite的帖子

如何在Elm Client和Haskell(Yesod)服务器之间发送JSON

我正在尝试从客户端到服务器进行基本的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进行任何更改.我会寻找一种解决方法,但这至少足以让我的开发继续下去.

ajax json haskell yesod elm

8
推荐指数
2
解决办法
2336
查看次数

是否有可能在Python中继承Lock()对象?如果没有,其他调试死锁的方法?

所以,我有一个多线程的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)

所以,我的问题是双重的:

  1. 是否可以将Lock对象子类化为我正在做的事情?

  2. 如果没有,在python中调试死锁的最佳方法是什么?

注意:我没有编写任何Python扩展.有一个类似的问题:如何使用python调试死锁? 但是,它涉及编译C++代码和使用GDB,因为我的代码是纯Python,所以我无法做到.

python oop multithreading deadlock thread-safety

7
推荐指数
2
解决办法
2168
查看次数

哪个Websockets库与Yesod一起使用?

我想知道是否有人可以解释Haskell websocket库之间的差异以及它们如何与Yesod一起工作.

我要介绍的两个主要示例是Network.Websocketswai websockets包的教程.

我无法为wai包找到一个好的例子或教程.既然yesod使用wai,它对简单的网络有什么优势呢?它是否意味着用于代替Network.Websockets或与Network.Websockets结合使用?

我见过一些例子,但我无法理解他们如何真正融入yesod环境.如果有人可以解释websockets如何与处理程序和IO相关联,那么在Yesod中,这将是很好的.

注意:我已经看到了这个问题这个问题,但我无法理解如何应用它们,因为它们实际上没有解释websockets适合Yesod的位置.

haskell websocket yesod haskell-wai

7
推荐指数
1
解决办法
1113
查看次数

保证哪一阶定理证明能在单峰输入时停止?

Monadic一阶逻辑,其中所有谓词都恰好采用一个参数,是一阶逻辑的已知可判定片段。测试公式是否可以满足此逻辑是可以确定的,并且存在基于分辨率的方法来确定这一点。

我处于需要测试一些单子一阶逻辑语句的可满足性的情况。我意识到我将达到理论上的复杂性极限,但我希望在常见情况下能够获得合理的性能。

现在,存在大量的定理证明,它们提供了解决一阶逻辑问题的快速方法。其中包括VampireSPASSE,以及Z3CVC4的量词扩展。但是,由于不确定性,不能保证它们停止运行。

我的问题

在现有的定理证明者中,有谁能保证在给定单子式公式作为输入时停止?还是有一种方法可以使用它们(以某种方式)有效地测试单子公式的可满足性?

formal-verification proof theorem-proving first-order-logic smt

7
推荐指数
0
解决办法
78
查看次数

我可以在运行时从字符串编译haskell函数(使用插件)吗?

我有一个应用程序,由于各种原因,我需要运行任意的,用户提供的代码.(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,但我不太了解它以及它与此有何关系.

请注意,我已经尝试过提示,但它不适合我的应用程序,因为它不是线程安全的.

haskell dynamic ghc hotswap ghc-api

6
推荐指数
1
解决办法
584
查看次数

Haskell插件和cabal沙箱

所以,我正在尝试使用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)

haskell dynamic-linking ghc cabal cabal-dev

6
推荐指数
1
解决办法
424
查看次数

限制GHC中每个线程的线程内存访问

我想知道,是否可以限制线程使用的内存量?我正在寻找运行服务器,其中提交并运行不受信任的用户代码.我可以使用SafeHaskell来确保它不执行任何未经授权的IO,但我需要确保用户的代码不会使整个服务器崩溃,即通过导致堆栈溢出或内存不足堆错误.

有没有办法限制每个单独线程可以访问的内存量,或者某种方式确保如果一个线程占用大量内存,那么只有该线程被终止?

也许有一种方法,当任何线程遇到内存不足错误时,我可以捕获异常并选择哪个线程死掉?

我更多地谈论并发性,在forkIO和STM线程的意义上,而不是par和seq的并行性.

注意:这与这个问题非常相似,但它从未得到一般问题的答案,而是答案涉及问题的具体情景.此外,自2011年以来,有可能在GHC 7.8中有所改变,可能是新的IO经理?

concurrency multithreading haskell memory-management ghc

6
推荐指数
1
解决办法
180
查看次数

使用Node运行GHCJS程序的变量太多

我正在尝试使用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)
  1. 是否可以增加节点中允许的变量数量?
  2. 是否有更好的实用程序来运行JS文件,这将允许更多的变量
  3. 是否有可以自动减少变量数量的优化工具?

请注意,这是机器生成的JS,因此我不希望手动完成并减少变量的数量.

欢迎任何想法.

javascript haskell ghc node.js ghcjs

6
推荐指数
1
解决办法
663
查看次数

断言类型类适用于类型族应用程序的所有结果

我有一个如下定义的类型族:

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 typeclass type-families type-level-computation sbv

6
推荐指数
2
解决办法
128
查看次数

榆树有相当于Haskell的"读"

我正在编写一个在线游戏,我在服务器端后端使用Haskell,在前端/渲染时使用Elm.

现在我把我的GameState作为一个大的ADT,这个类型很简单,我也可以在Elm中使用它.我希望避免使用JSON,并简单地将Elm输出"show"输出到数据上,然后我可以将其解析回Elm中的ADT.

我想知道,有没有相当于haskell的"读取",它可以自动查看show输出的字符串,并将其解析回数据?如果没有,是否有任何现有的解析器库可供Elm使用?

如果我最终使用JSON,有没有办法自动将其转换为ADT?(或许类似于Aeson的FromJSON?)

parsing haskell functional-programming input elm

5
推荐指数
1
解决办法
1040
查看次数