小编scl*_*clv的帖子

在Conduit中使用持久性

首先,我要完成的任务的简化版本:我有几个大文件(相当于30GB),我想修剪重复的条目.为此,我建立了一个数据散列数据库,逐个打开文件,散列每个项目,并将其记录在数据库和输出文件中,如果它的散列不在数据库中.

我知道如何使用迭代器,枚举器,我想尝试管道.我也知道如何用管道来做,但现在我想使用管道和持久性.我遇到了类型问题,可能还有整个概念ResourceT.

这里有一些伪代码来说明问题:

withSqlConn "foo.db" $ runSqlConn $ runResourceT $ 
     sourceFile "in" $= parseBytes $= dbAction $= serialize $$ sinkFile "out"
Run Code Online (Sandbox Code Playgroud)

问题在于dbAction功能.我想自然地在这里访问数据库.由于它所做的动作基本上只是一个过滤器,我首先想到这样写:

dbAction = CL.mapMaybeM p
     where p :: (MonadIO m, MonadBaseControl IO (SqlPersist m)) => DataType -> m (Maybe DataType)
           p = lift $ putStrLn "foo" -- fine
           insert $ undefined -- type error!
           return undefined
Run Code Online (Sandbox Code Playgroud)

我得到的具体错误是:

Could not deduce (m ~ b0 m0)
from the context (MonadIO m, MonadBaseControl IO (SqlPersist m))
  bound by …
Run Code Online (Sandbox Code Playgroud)

haskell persistent yesod conduit

11
推荐指数
1
解决办法
875
查看次数

WPF捕捉控件

我现在的空闲时间项目,为了深入WPF MVVM,是我童年时常玩的旧拼图的"数字"副本.它基本上是一个简单的拼图,其中一个必须用不同类型的碎片填充给定的空间,以便整个空间被填充.但随着六角形空间的额外扭曲.

只是为了说明,这就是WPF目前的样子:

http://img190.imageshack.us/img190/2553/atomgridmolecule.png

因此,基本上有许多预定义的部分(如上面的橙色部分)可以"插入"给定的网格(上面的灰色部分).

所以结果看起来像这样:

http://img30.imageshack.us/img30/2553/atomgridmolecule.png

我希望用户(可能只有我^^)能够将碎片拖放到网格中.我希望拖动看起来自然意味着在拖动时具有正确的偏移量取决于用户单击该块的位置.

网格和分子都是相同的控件,来自WPF Panel类的自定义六边形面板控件.

问题在于如何进行"插入",特别是"拔出".

我有两个关于如何解决这个问题的想法:

  1. 只需为网格中的单元格着色并隐藏原始单元
    • 优点:
      • 零成本完美的细胞排列
    • 缺点:
      • 如果拖出来,使用正确的鼠标偏移在正确的位置重新创建一块,似乎不可能?难做
  2. 将片断贴在网格上并将其显示在顶部
    • 优点:
      • 拖出是一个简单的拖动操作,就像拖入一样
    • 坏处:
      • 不知何故必须将这件作品与下面的网格对齐,某种对齐方式

那我应该采取哪种方法?更重要的是我如何在WPF中实现这一点?特别是使用干净的MVVM方式.


非常感谢你的帮助!任何输入都非常感谢!

编辑:
谢谢阿兰,我也这么认为.

但是我现在该如何实现呢?

  • 我怎样才能真正得到坐标?
  • 所有的橙色圆圈都是相互关联的,那么我如何"移动"或更好地"插入"它们作为一个整体呢?

c# wpf controls

10
推荐指数
1
解决办法
2598
查看次数

ghci中的持久控制台历史记录

在6.12.2中,我觉得这对我有用.但是现在我正在使用6.12.3(通用unix二进制文件)的新盒子,显然有一些设置我不知道了.

我在单个会话中的ghci中有一个控制台历史记录(即ghci的执行),但是这个历史记录不像过去那样在会话之间保存和重新加载.如果ghci正在使用readline,editline或haskeline,我无法跟踪,所以我不太清楚从哪里开始修复它.

haskell ghci

10
推荐指数
1
解决办法
1653
查看次数

如何选择合适的Haskell C型?

我研究了一些Haskell编程语言,现在我发现可以从C程序中调用Haskell函数.在我的Haskell研究期间,我用Haskell创建了一个单词频率计数器,我想尝试从C程序调用该函数,但我不知道该怎么做.我在haskell.org上找到了这两个网站:

从C调用Haskell

外国C类型(Haskell模块)

尽管如此,我还是有点迷失哪种类型.我的haskell程序是以下功能的管道:

putStr.unlines.map testF.sortedTree

我自己的功能

  • testFtestF的类型:: Show a =>([Char],a) - > [Char]
  • sortedTreesortedTree的类型::(Num a,Ord a)=> [Char] - > [([Char],a)]

我很确定我需要将每个函数的类型转换为C类型,而不是只转换调用管道的函数."主要"功能的类型是

fileFreq :: [Char] - > IO()

除此之外,我使用的是Haskell二叉树,它不是前奏类型.

这是整个Haskell代码:

module WordCounter where

import List
import Char
import Foreign.C.Types

data BTree a = Tip | BNode a (BTree a) (BTree a) deriving Show

insertFreq x Tip = BNode (x,1) Tip Tip
insertFreq x (BNode (q,p) l r)  | (map toLower x)==(map toLower …
Run Code Online (Sandbox Code Playgroud)

c haskell types ffi

10
推荐指数
1
解决办法
713
查看次数

集中式Haskell/Darcs工具链的轻量级持续集成?

我想要一个简单的CI用于小型开发设置.两个动机 - 完整的构建需要一些时间,预期的测试套件也需要一些时间.我真的不想一头扎进需要一个java应用程序容器的大玩家之一,或者用什么来显示多种颜色的花式图等等.我会特别感兴趣的是"文化上的"Haskellish - 最好是命令行交互或配置文件,与Darcs互操作是绝对必须的.

是否存在任何此类工具,或者我是一个大玩家还是自己编写?

说到这一点,我记得有一个为GHC设立的建设农场.看一下,我注意到它曾经使用过buildbot,现在使用自定义构建器.虽然这些是针对不同的工作流程设置的,但它们中的任何一个都是更简单,更直接的解决方案吗?

编辑:我现在要使用buildbot.将更新它的工作原理.

编辑2:Ben Lippmeier已将buildbox置于hackage上,这似乎也是本机Haskell CI解决方案的基础.它目前未被记录,可能不是完全满足我的需求,但它是:http://hackage.haskell.org/package/buildbox.他用它来编写一个用于修复的buildbot:http://code.haskell.org/repa/repa-head/repa-bot/ .

continuous-integration haskell darcs

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

安装SNAP 1.4时,NuGet错误"外部程序包不能依赖于目标项目的程序包"

尝试使用Nuget 1.3将SNAP 1.4安装到新的VS2010项目时出现以下错误:
"外部程序包不能依赖于目标项目的程序包"

这是SNAP Nuget程序包的问题,​​还是我做错了什么?

PM> Install-Package SNAP'Cast.Core(≥2.5.2)'未安装.试图从源检索依赖...完成.
Install-Package:外部包不能依赖于目标项目的包.
在行:1 char:16
+ Install-Package <<<< SNAP
+ CategoryInfo:NotSpecified:(:) [Install-Package],InvalidOperationException
+ FullyQualifiedErrorId:
NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand

nuget

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

在GHC RTS的调度程序中,为什么它将一个功能标记为免费?

当我阅读关于调度程序的GHC Wiki评论时,我对此部分感到困惑:

将Capability标记为免费的一个原因是支持快速标注.在进行安全的外部调用时,我们必须释放Capability,然后将其移交给另一个工作线程.如果外国呼叫很短,我们不希望在返回时产生上下文切换的成本,但由于我们将能力标记为空闲,因此返回的任务很可能立即重新获取并继续.我们醒来的工作人员会发现Capability已经拥有,然后再次进入休眠状态 (如果没有可用于运行该工作线程的空闲CPU,则可能会产生双上下文切换).

我的问题:
对于大胆的句子,确实会导致"双上下文切换",无论是否标记自由的能力.此外,如果它们发生的话,两个"开关"是什么 - 从who1到who2,然后who2到who3?

haskell scheduling runtime ghc

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

使用netwire进行游戏实体建模

我将使用netwire和OpenGL在Haskell中编写实时游戏.基本的想法是每个对象将由一个导线表示,它将获得一些数据作为输入并输出其状态,然后我将它全部挂钩到一个大的线路,将GUI的状态作为输入并输出世界状态,然后我可以将其传递给渲染器以及碰撞检测等一些"全局"逻辑.

我不确定的一件事是:我如何键入电线?并非所有实体都有相同的输入; 玩家是唯一可以访问键输入状态的实体,寻找需要目标位置的导弹等.

  • 一个想法是将一个ObjectInput类型传递给所有东西,但这对我来说似乎很糟糕,因为我可能会意外地引入我不想要的依赖项.
  • 在另一方面,我不知道是否有SeekerWire,一个PlayerWire,一个EnemyWire等,将是一个好主意,因为他们几乎"相同"的,所以我不得不在它们之间复制功能.

我该怎么办?

haskell frp

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

TypeRep与"Type"GADT的关系

Scrap中你的样板重新加载,作者描述了一个新的Scrap Your Boilerplate演示文稿,它应该与原版相同.

然而,一个不同之处在于它们假设一组有限的,基本的"基础"类型,用GADT编码

data Type :: * -> * where
  Int :: Type Int
  List :: Type a -> Type [a]
  ...
Run Code Online (Sandbox Code Playgroud)

在原始SYB中,使用类型安全转换,使用Typeable类实现.

我的问题是:

  • 这两种方法之间有什么关系?
  • 为什么GADT表示被选为"SYB Reloaded"演示文稿?

haskell scrap-your-boilerplate

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

Haskell Stack在OSX Sierra上无法正常工作

我不能让haskell的堆栈在我的Mac上工作.

我安装了haskell: brew cask install haskell-platform

这里指定的是:https://www.haskell.org/platform/mac.html#osx-homebrewcask

我也尝试通过可下载的软件包安装在同一个站点上.

我执行以下命令: stack new my-project cd my-project stack setup stack build stack exec my-project-exe

根据此处的文档:https: //docs.haskellstack.org/en/stable/README/#quick-start-guide

我立即看到了这个: [1] 43017 killed stack exec my-project-exe

我还尝试了许多安装haskell的方法.我实际上已经能够得到的东西编译和只使用执行的cabal,但我不能再拿到hlint,hindentghc-mod工作,他们都返回了类似的消息,上面的一个.我希望能够在我的Mac上使用IntelliJ中的HaskForce,但我从来没有运气让haskell工作.

系统规格

  • macOS 10.12.6(16G29)(Sierra)
  • 全新卸载/重新安装XCode(接受条款)
  • 作为包经理酿造

这里有一个gif的例子:https://imgur.com/gallery/afYym7m

UPDATE

我吹走了与ghc,stack和cabal相关的所有东西,然后以这种方式安装 https://haskell-lang.org/get-started

编写小的HelloWorld.hs脚本工作正常并显示 Hello, World

但是,干嘛

stack new someproj cd someproj stack build

结果如下:

?  someproj stack build
[1 of 2] Compiling Main             ( /Users/trevord2/.stack/setup-exe-src/setup-mPHDZzAJ.hs, /Users/trevord2/.stack/setup-exe-src/setup-mPHDZzAJ.o …
Run Code Online (Sandbox Code Playgroud)

macos haskell haskell-stack

8
推荐指数
0
解决办法
506
查看次数