小编Vic*_*or 的帖子

Yesod/Persistent的MongoDB示例

Haskell和Yesod新手在这里.我一直在尝试从Yesod书中的Persistent章节(http://www.yesodweb.com/book/persistent)中跟踪与Yesod示例的集成.似乎Sqlite编译并运行良好.但是,我正在尝试使用MongDB,并且很难让事情发挥作用.特别:

  1. 在sqlite的示例中:

    share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persist|

    Yesod书中说"Mongo代码将mongoSettings改为使用".但我无法在任何模块中找到它,并且代码无法编译.所以相反,我不得不使用它而不是mongoSettings:

    MkPersistSettings { mpsBackend = ConT ''Action }

    我必须导入Language.Haskell.TH.Syntax才能让它进行编译,我假设它应该对用户隐藏,所以我当然不是正确的.

    另外,我发现在Mongo的Persistent测试中没有"share"和"migrate"部分.我实际上不确定为什么,我猜它是因为MongoDB是Schema-less而不需要迁移?

  2. SqlPersist

    我认为MongoPersist是SqlPersist的对应物,我猜它几乎是 - 我MongoPersist在Persistent的测试目录中的init.hs中找到了一个实例.但它被评论出来了,所以我觉得它已经过时了?否则,就我所知,它无论如何都没有定义.所以我不知道如何转换以下行(Yesod书的第115页,或接近http://www.yesodweb.com/book/persistent的末尾)来为MongoDB工作:

    instance YesodPersist PersistTest where
        type YesodPersistBackend PersistTest = SqlPersist
        runDB action = do
            PersistTest pool <- getYesod
            runSqlPool action pool
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用withMongoDBConn

    所以对于sqlite,代码是(上面网页的第一个例子):

    main :: IO ()
    main = withSqliteConn ":memory:" $ runSqlConn $ do
        runMigration migrateAll
        johnId <- insert $ Person "John Doe" $ Just 35
        ... and …
    Run Code Online (Sandbox Code Playgroud)

haskell persistent mongodb yesod

12
推荐指数
1
解决办法
3068
查看次数

核心数据对象ID与永久对象ID

这个问题可能看起来像以前被问过很多次,但我不确定我是否正确地汇总了答案.所以这里.

Apple(WWDC 2012 Session 214)将ObjectID描述为上下文安全的线程安全的.所以我花了一些时间来转换我的代码以利用它.但是,它看起来并不像上下文一样安全,因为这里 讨论的核心数据:子上下文是否会为新插入的对象获取永久的objectID?在其他地方,存在称为永久ID的东西.

关于这个永久性ID业务,我查看了NSManagedObjectContext.h:

/* Converts the object IDs of the specified objects to permanent IDs.  This implementation
will convert the object ID of each managed object in the specified array to a permanent
ID.  Any object in the target array with a permanent ID will be ignored;  additionally,
any managed object in the array not already assigned to a store will be assigned, based on
the same rules Core Data uses for assignment …
Run Code Online (Sandbox Code Playgroud)

core-data objective-c nsmanagedobjectcontext ios objectid

9
推荐指数
1
解决办法
1577
查看次数

与hmatrix的ghc问题

我正在尝试使用hmatrix,而且hmatrix-gsl-stats.但我得到了绝对奇怪的结果.任何人都能重现我所看到的吗?

import Numeric.LinearAlgebra
import Numeric.GSL.Fitting.Linear

main :: IO ()
main = do
  let y = fromList [1,2,3,4,5]
  let x = trans $ fromLists [[1,2,3,4,5], [1,1,1,1,1]]
  let x3 = fromLists [[1,1], [2,1], [3,1], [4,1], [5,1]]
  print $ x == x3
  print $ multifit x y
  print $ multifit x3 y
Run Code Online (Sandbox Code Playgroud)

所以我只是编译它并运行它,我得到:

True
(fromList [0.6121951219512196,0.39756097560975645],(2><2)
 [   0.5100317271465397, -0.46568114217727535
 , -0.46568114217727535,     0.82048582193139 ],27.27560975609756)
(fromList [1.0000000000000002,-8.881784197001252e-16],(2><2)
 [ 2.1364982849735737e-32, -6.40949485492072e-32
 ,  -6.40949485492072e-32, 2.350148113470931e-31 ],6.409494854920721e-31)
Run Code Online (Sandbox Code Playgroud)

我错过了一些完全明显的东西吗

haskell gsl

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

haskell中有一个`ma - >(a - > mb) - > ma`函数类型吗?

所以>>= :: m a -> (a -> m b) -> m b>> :: m a -> m b -> m b.

<* :: f a -> f b -> f a.

但我想要做的事情m a -> (a -> m b) -> m a,即实际上丢弃计算结果并保留原始.在我的例子中,这个计算结果只是一个返回的IO操作,()所以我只需要传递原始值.

有这样的功能吗?如果没有,我该如何撰写?没想成功.谢谢!

monads haskell

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