小编Art*_*yom的帖子

为什么"失败"(来自镜头)会产生无效的遍历?

文档:

尝试第一个Traversal(或Fold),如果没有返回任何条目,则返回第二个Traversal(或Fold).

只有Traversal当第二个Traversal与第一个结果不相交或返回完全相同的结果时,这才有效.

是否有一个简单的示例,failing表明由此产生的无效遍历和一个展示它的测试用例?

haskell haskell-lens

15
推荐指数
1
解决办法
350
查看次数

"模板Haskell + C"错误的解决方法?

我有以下情况:

  • 库X是C中一些代码的包装器.
  • 库A取决于库X.
  • 库B使用模板Haskell并依赖于库A.

GHC bug#9010使用GHC 7.6无法安装库B. 处理TH时,GHCi会启动并尝试加载库X,这会失败并显示消息

Loading package charsetdetect-ae-1.0 ... linking ... ghc:
~/.cabal/lib/x86_64-linux-ghc-7.6.3/charsetdetect-ae-1.0/
libHScharsetdetect-ae-1.0.a: unknown symbol `_ZTV15nsCharSetProber'
Run Code Online (Sandbox Code Playgroud)

("未知符号"的实际名称因机器而异).

有没有解决这个问题的方法(当然除了"不要使用模板Haskell")?也许库X必须以不同的方式编译,或者有一些方法可以阻止它加载(因为它不应该在代码生成期间调用)?

haskell ghc template-haskell

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

如何从分叉线程安全地使用WebKitGTK?

我正在尝试使用GTK3和WebKit在Haskell中创建一个简单的应用程序.此代码创建并显示一个包含WebView内部的窗口,每次按下一个键时都会显示一个随机数.

import           Control.Monad.Trans (lift)
import           Control.Concurrent (forkOS)
import           System.Random (randomIO)
import           Graphics.UI.Gtk                   -- gtk3
import           Graphics.UI.Gtk.WebKit.WebView    -- webkitgtk3


main = forkOS $ do

  -- Init GTK.
  initGUI

  -- Create a window which would finish the GTK loop
  -- after being closed.
  window <- windowNew
  window `after` objectDestroy $
    mainQuit

  -- Create a WebView inside.
  webView <- webViewNew
  set window [containerChild := webView]

  -- Make the WebView display a random number on key press.
  webView `on` keyReleaseEvent $ lift …
Run Code Online (Sandbox Code Playgroud)

gtk multithreading haskell webkitgtk

8
推荐指数
1
解决办法
417
查看次数

封闭式家庭不能按预期工作

几个小时前,我建造了GHC HEAD来试验新的闪亮封闭式系列.

{-# LANGUAGE TypeFamilies, MultiParamTypeClasses, FlexibleInstances #-}

type family C a b where
  C  a [a] = [a]
  C  a  a  = [a]
Run Code Online (Sandbox Code Playgroud)

现在我尝试C使用:

class Combine a b where
  combine :: a -> b -> C a b

instance Combine a [a] where
  combine a b = a : b

instance Combine a a where
  combine a b = [a, b]
Run Code Online (Sandbox Code Playgroud)

导致此错误:

Couldn't match expected type ?C a a’ with actual type ?[a]’
...
In the expression: …
Run Code Online (Sandbox Code Playgroud)

haskell type-families

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

使用ekmett的镜头更新字段的多个子字段

来玩个游戏.我们将使用两个桩,两个都由黑色/白色侧面芯片组成.

data Pile = Pile { _blacks, _whites :: Int }
makeLenses ''Pile

data Game = Game { _pileA, _pileB :: Pile }
makeLenses ''Game
Run Code Online (Sandbox Code Playgroud)

一个非常聪明的举动是将A堆中的黑色芯片和白色芯片 - 在B堆中翻转.但是如何?

cleverMove :: Game -> Game
cleverMove game = game & pileA . blacks -~ 1
                       & pileA . whites +~ 1
                       & pileB . blacks +~ 1
                       & pileB . whites -~ 1
Run Code Online (Sandbox Code Playgroud)

不是很优雅.如何在不参考每个桩两次的情况下进行此操作?

我想出的唯一的事情(我不喜欢它):

cleverMove game = game & pileA %~ (blacks -~ 1)
                                . (whites +~ 1)
                       & pileB …
Run Code Online (Sandbox Code Playgroud)

haskell lenses

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

"Const"和仿函数的产品名称?

SF已经定义的任何地方,或者它至少有名字吗?

data SF a f x = SF a (f x)

instance Functor f => Functor (SF a f) where
  fmap g (SF a fx) = SF a (fmap g fx)
Run Code Online (Sandbox Code Playgroud)

haskell functor

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

使用 Nix 构建 Haskell 依赖项时,如何避免构建可执行文件?

在我的.nix文件中,我有包foobarbar取决于foo

let
  haskellPackages = reflex-platform.ghcjs.override {
    overrides = self: super: {
      foo =
        pkgs.haskell.lib.dontCheck
          (pkgs.haskell.lib.dontHaddock
             (self.callCabal2nix "foo" ./foo { }));
      bar = self.callCabal2nix "bar" ./bar { };
    };
  };

in
  haskellPackages.bar
Run Code Online (Sandbox Code Playgroud)

如何禁用构建中包含的可执行文件foo?我只想建立图书馆。

我试过overrideCabal,但没有运气。这仍然构建foo可执行文件:

let
  haskellPackages = reflex-platform.ghcjs.override {
    overrides = self: super: {
      foo =
        pkgs.haskell.lib.overrideCabal
          (pkgs.haskell.lib.dontCheck
             (pkgs.haskell.lib.dontHaddock
                (self.callCabal2nix "foo" ./foo { })));
          (drv: { isExecutable = false; });
      bar = self.callCabal2nix "bar" ./bar …
Run Code Online (Sandbox Code Playgroud)

haskell nix

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

wxHaskell死了吗?

它好像死了.是吗?

如果是的话,我应该使用什么呢?

haskell wxhaskell

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