小编Dan*_*Man的帖子

Haskell更有效的方法来解析数字行的文件

所以我有一个8mb的文件,每个文件有6个整数,由一个空格隔开.

我目前解析这个的方法是:

tuplify6 :: [a] -> (a, a, a, a, a, a)
tuplify6 [l, m, n, o, p, q] = (l, m, n, o, p, q)

toInts :: String -> (Int, Int, Int, Int, Int, Int)
toInts line =
        tuplify6 $ map read stringNumbers
        where stringNumbers = split " " line
Run Code Online (Sandbox Code Playgroud)

并映射到Ints over

liftM lines . readFile
Run Code Online (Sandbox Code Playgroud)

这将返回一个元组列表.但是,当我运行它时,加载文件并解析它需要将近25秒.我有什么办法可以加快速度吗?该文件只是纯文本.

haskell

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

在TextInput React-Native上获取光标位置

有没有人对如何获得插入位置有任何想法TextInput?我试过onSelectionChange并创建一个事件发射器,DocumentSelectionState但似乎都没有工作(他们不会触发任何东西,无论我选择什么).

例如:https://rnplay.org/apps/eZnvIA

javascript react-native

7
推荐指数
3
解决办法
4309
查看次数

创建一个Reader和Maybe Monad的组合(Applicative Functor)

我想做的是从Reader monad中制作一个Applicative Functor,它做了这样的事情:

data MyData = Int Int

get2Sum :: Reader [Int] Int
get2Sum = do
    myData <- ask
    let fst2 = take 2 myData
    case length fst2 of
        2 -> return $ sum fst2
        _ -> return 0

myDataFromApplicative = MyData <$> get2Sum <*> get2Sum

main = print $ runReader myDataFromApplicative [1,2]
Run Code Online (Sandbox Code Playgroud)

但是,如果运行类似的东西

runReader myDataFromApplicative [1]
Run Code Online (Sandbox Code Playgroud)

而不是给我 MyData 0 0

我希望它能给我 Error

我正在玩创建自己的Reader Monad来实现这一目标,但无法弄明白.

我想象的是这样的事情(显然这只是一个大纲

data SuccessReader r a = Interm {runSuccessReader :: r -> SuccessReader a} | Success …
Run Code Online (Sandbox Code Playgroud)

monads haskell monad-transformers

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

为什么把这个liftIO放在一个函数中,但直接调用不行?

我看到一些涉及monad实例的奇怪行为.我正在编写一个快照应用程序,在我的一个处理程序中,除非我创建一个函数,否则它将无法编译.

withManager直接在我的处理程序中调用如下:

authenticateLanding :: Handler App App ()
authenticateLanding = do
    req <- getRequest
    oir <- liftIO $ withManager $ OpenId.authenticateClaimed (convertParams req)
    writeBS (fromString $ show oir)
Run Code Online (Sandbox Code Playgroud)

导致此编译时错误

openIDTrial.hs:120:25:
    No instance for (Control.Monad.Trans.Control.MonadBaseControl
                       IO m1)
      arising from a use of `withManager'
    Possible fix:
      add an instance declaration for
      (Control.Monad.Trans.Control.MonadBaseControl IO m1)
    In the expression: withManager
    In the second argument of `($)', namely
      `withManager $ OpenId.authenticateClaimed (convertParams req)'
    In a stmt of a 'do' block:
      oir <- liftIO
             $ …
Run Code Online (Sandbox Code Playgroud)

haskell

5
推荐指数
0
解决办法
471
查看次数

Django ImageField"上传有效图像.您上传的文件不是图像或损坏的图像."

我安装了PIL,但每当我尝试通过Django Admin为我的模型将.png文件上传到图像字段时,我收到此错误:

"上传有效图片.您上传的文件不是图片或图片已损坏."

其他图像类型工作正常.我尝试了几种不同的PNG文件.

我已经尝试在安装pypng,libpng-dev等之后重建PIL.并且我在ubuntu服务器上.

python django virtualenv

4
推荐指数
2
解决办法
4457
查看次数

seq不强迫评估

所以我的haskell程序看起来像这样:

main = do
    secondData <- loadSecondBars "output.data"
    putStrLn $ "Generated Second Data " ++ (show $ length secondData)
    let tenMinBars = secondData `seq` generateBars (barSize featureSet) secondData
    putStrLn $ "Generated Ten Minute Bars " ++ (show $ length tenMinBars)
    let combinedData = seq tenMinBars sortBars (tenMinBars ++ secondData)
    putStrLn $ "Generated Combined" ++ (show $ length combinedData)
    let completedOrderManager = evalState (runBar combinedData) startState
    putStrLn "Ran Algo"
Run Code Online (Sandbox Code Playgroud)

这样做需要大约8秒钟来加载我的第二个数据,然后大约需要3秒来完成其余的功能.

但是,如果我删除节目长度数据,它将闪烁

"Generated Second Data"
"Generated Ten Minute Bars"
"Generated Combined"
"Ran …
Run Code Online (Sandbox Code Playgroud)

haskell

4
推荐指数
1
解决办法
210
查看次数

在数据类型构造函数中使用类

目前我有这样的事情:

data MyData = SomeData | MoreData | EvenMore
data DataLists = DataLists [MyData] [MyData]
Run Code Online (Sandbox Code Playgroud)

这让我显然可以这样做:

myDataList :: DataLists
myDataList = DataLists [SomeData, MoreData] [EvenMore, SomeData]
Run Code Online (Sandbox Code Playgroud)

但我想做一些像这样的事情:

-- Static Module File:

class MyClass b where
    evaluate :: b -> Int

data SomeData = SomeData
data MoreData = MoreData
data EvenMore = EvenMore

instance MyClass SomeData where
    evaluate _ = 2
instance MyClass MoreData where
    evaluate _ = 3
instance MyClass EvenMore where
    evaluate _ = 4

data DataList = DataList …
Run Code Online (Sandbox Code Playgroud)

haskell

4
推荐指数
1
解决办法
160
查看次数

调试状态Monad时,根据跟踪的位置反转顺序

所以我正在建立一个State Monad并遇到一些懒惰的问题,这让我很难调试.

我的州Monad通过列入一个值列表来操作,将它们一个接一个地推送到州的一部分,然后我分析每个州之后的状态值,以产生该州的另一部分.

我想出了这个简单的例子来说明为什么它很难调试.

module Main where

import Control.Monad.State
import Debug.Trace

runSim :: [Int] -> State String String
runSim [] = return =<< get
runSim (cur:xs) = do
    lst <- get
    let val =  (show $ 2*cur)
    put $ trace ((show $ length lst) ++ " " ++ (show cur)) ((val) ++ "," ++ lst)
    runSim xs

main :: IO ()
main = print $ evalState (runSim [1..10]) ""
Run Code Online (Sandbox Code Playgroud)

这个输出是:

0 1
2 2
4 3
6 4
8 5 …
Run Code Online (Sandbox Code Playgroud)

haskell

4
推荐指数
1
解决办法
183
查看次数

是否可以重新组织嵌套元组?

我想做的是这样的:

采取任意多态元组:

x = (((1, ""), Nothing), ('', 6))
Run Code Online (Sandbox Code Playgroud)

并使用类似的东西重新组织(不一定是相同的顺序,但结构相同:

(Int, (Char, (Maybe Int, (String, (Int, ()))))
Run Code Online (Sandbox Code Playgroud)

我真的不知道这个模式的名称,所以我无法尽我所能使用谷歌.

haskell

4
推荐指数
1
解决办法
930
查看次数

映射需要IO在列表上的函数的更好方法

最近我有一个字符串列表,需要独立遍历每个字符串并执行一些IO功能.

所以我基本上就是这样:

goOverList :: [String] -> IO ()
goOverList (x:[]) = do
    putStrLn x
goOverList (x:xs) = do
    goOverList [x]
    goOverList xs

main = do
    let myList = ["first", "second", "third"]
    goOverList myList
Run Code Online (Sandbox Code Playgroud)

IO有点复杂,但这是它的要点(需要有一个功能超过列表,并IO根据列表成员做)我希望有人可以告诉我如何更好地做到这一点.

haskell

3
推荐指数
2
解决办法
518
查看次数

从manytomanyfield计算值

我试图从一组具有manytomanyfield的对象中计算不同的值

例如

对象文章有许多标记对象的字段


一篇文章有​​标签"tag1""tag2"

另一篇文章有​​标签"tag2""tag3"


我想找出一些可以返回以下内容的东西:

"tag1":1"tag2":2"tag3":1

我以为我可以用articles.objects.all().values('tags')或者其他东西做些什么但是我空了.

django manytomanyfield

2
推荐指数
1
解决办法
5291
查看次数

Django + nginx + gunicorn给出了502错误.很少的日志信息

我的服务器配置如下(这是全新安装的ubuntu 10.10)

nginx + gunicorn + django + supervisord来运行它

当我尝试访问我的网站时,我收到502错误.这将显示在错误日志中:

2011/06/03 10:40:59 [error] 15066#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: [retracted], server: [retracted], request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:29000/", host: "[retracted]"
Run Code Online (Sandbox Code Playgroud)

这是我的nginx.conf http://pastebin.com/t0V2yFxr

这是我的supervisord.conf http://pastebin.com/pqVqRLSk

和我的gunicorn.conf

bind = "127.0.0.1:29000"
logfile = "/sites/[retracted]/logs/gunicorn.log"
workers = 3
Run Code Online (Sandbox Code Playgroud)

当我运行sudo supervisordctl状态

什么也没有回报.所以这让我怀疑它没有正常运行.但是,没有supervisord.log文件(在/ var/log /或/ code/[]/logs /中)或gunicorn.log显示错误.

所以我根本无法调试.关于如何获得这种羚牛护理的任何建议?

django nginx supervisord gunicorn

2
推荐指数
1
解决办法
2588
查看次数