我会直接了解它 - 有没有办法在Haskell中拥有一个动态大小的恒定时间访问数据结构,就像任何其他命令式语言中的数组一样?
我确信在某个地方有一个模块可以为我们神奇地做到这一点,但我希望能以一种功能性的方式对一个人如何做到这一点的一般解释:)
据我所知,Map使用二叉树表示,因此它具有O(log(n))访问时间,当然列表具有O(n)访问时间.
另外,如果我们这样做它是不可变的,它会是纯粹的,对吧?
任何想法我怎么可能去做(超出Array = Array { one :: Int, two :: Int, three :: Int ...}模板Haskell之类的东西)?
我正在尝试使用Pipes库来建模工作流程.在那个工作流程中,我想积累生产者的所有输出,然后传递它.在这种情况下,我知道我的制作人产生了有限的输出量.
所以,如果我有:
prod :: Producer a m ()
accum :: Pipe a [a] m r
groupConsumer :: Consumer [a] m r
Run Code Online (Sandbox Code Playgroud)
我如何建模accum以便我能做到:
runEffect $ prod >-> accum >-> groupConsumer
Run Code Online (Sandbox Code Playgroud)
谢谢!
UPDATE
我已经通过脚手架创建的实际项目简化了演示 - 您可以在这里查看:https://github.com/tetigi/yesod-bug-test
按照README设置repo并复制问题!谢谢 :)
原始邮政
我最近一直在尝试使用yesod创建一个简单的网站 - 在一个特定的处理程序中,它会进行一些runDB调用(选择并将一些值插入到~200项DB中).但是,在中等负载上,例如在浏览器中快速重新加载页面,页面开始挂起.
做一些调试,我发现似乎yes应用程序没有及时释放与数据库池的连接,最终等待它们发布.为了解决这个问题,我发现了以下其他事情:
这里有什么我想念的吗?网页没有做任何复杂的事情,因为下面的代码段会显示.有任何想法吗?目前,该网站将无法用于多个用户,直到我找到解决方法!
我正在使用标准的scaffolded yesod应用程序堆栈,如文档中所建议的那样.
干杯!
卢克
示例处理程序代码(删节)
getCompareR :: Handler Html
getCompareR = do
-- Get all entities from the db. Throws error if < 2 elems in the DB.
entities <- fmap (\xs -> assert (length xs >= 2) xs) $ runDB $ selectList [] []
-- Pick an entity at random
Entity _ thisThingEntity <- liftIO $ runRVar (choice …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试改进 Spring Shell 应用程序,而使其变得更好的一件事是它是否支持值和选项的制表符补全。
举个例子,如果我的 CLI 有一个命令getInfo --name <name>,其中<name>是数据库中有限名称集中的一个名称,那么能够很方便地执行以下操作
> getInfo --name Lu<tab>
Lucy Luke Lulu
> getInfo --name Luk<tab>
> getInfo --name Luke
Run Code Online (Sandbox Code Playgroud)
有没有办法使用现有的 Spring Shell 工具来做到这一点?我浏览了文档,但找不到任何有关自动完成值的信息。
干杯!
我有一堆(或将有一堆)使用OpenCV库和SimpleCV的Python代码.我还有一堆Haskell代码可以执行其他一些操作,但是想调用我在Python中定义的一个函数.这一个函数返回三元组的双精度数.
在Haskell中调用此函数的最佳方法是什么?
例如,一个简化的例子是我在Python中有一个函数
# foo.py
import SimpleCV
def foo():
return (1.0,2.0,3.0)
Run Code Online (Sandbox Code Playgroud)
我希望能够在Haskell中做到这一点
-- bar.hs
main = do
putStrLn $ show pyThingy.foo
Run Code Online (Sandbox Code Playgroud)
我尝试过使用MissingPy(http://hackage.haskell.org/package/MissingPy),但每当我尝试导入本地文件时,我都会得到
*** Exception: <<MissingPy.Python.Types.PyException>>
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在尝试使用Data.Aeson(https://hackage.haskell.org/package/aeson-0.6.1.0/docs/Data-Aeson.html)来解码一些JSON字符串,但它无法解析字符串包含非标准字符.
例如,文件:
import Data.Aeson
import Data.ByteString.Lazy.Char8 (pack)
test1 :: Maybe Value
test1 = decode $ pack "{ \"foo\": \"bar\"}"
test2 :: Maybe Value
test2 = decode $ pack "{ \"foo\": \"bòz\"}"
Run Code Online (Sandbox Code Playgroud)
在ghci中运行时,会得到以下结果:
*Main> :l ~/test.hs
[1 of 1] Compiling Main ( /Users/ltomlin/test.hs, interpreted )
Ok, modules loaded: Main.
*Main> test1
Just (Object fromList [("foo",String "bar")])
*Main> test2
Nothing
Run Code Online (Sandbox Code Playgroud)
有没有理由不解析带有unicode字符的String?我的印象是Haskell与unicode相当不错.任何建议将不胜感激!
谢谢,
tetigi
经过进一步调查后eitherDecode,我收到以下错误消息:
*Main> test2
Left "Failed reading: Cannot decode byte '\\x61': Data.Text.Encoding.decodeUtf8: Invalid UTF-8 stream" …Run Code Online (Sandbox Code Playgroud)