小编win*_*ent的帖子

什么时候我应该使用Relay GraphQL连接和简单列表?

在Relay GraphQL中,连接和列表都是类似数组的,但它们具有不同的功能.我什么时候应该使用?

graphql relayjs

47
推荐指数
1
解决办法
3328
查看次数

分发Haskell应用程序并更新它的最佳实践

TL;博士

大约一周前,我为我的第一个非平凡的Haskell项目发布了0.1.0.0软件包.我希望可执行文件易于安装和升级,即使对于非Haskeller也是如此.在README中,我建议使用安装cabal install.这是一个错误吗?

上下文

我听说过"Cabal hell",但没有意识到用户升级全局安装的软件包副本会有多么困难,即使我保守地没有改变.cabal文件中的任何版本依赖项.最后,我试图从0.1.0.0更新到0.2.0.0深入兔子洞.它警告我打破依赖关系,我尝试了各种各样的咒语来强制升级或重置我的本地状态,然后我就不得不重新安装ghc和使用cabal-installBrew软件包(这是在macOS上),以便让所有东西都恢复原状到我可以安装并再次运行的状态.

备择方案:

  • stack install:我已经在使用Stack来管理本地开发环境了,但是对于独立安装它似乎也很好,只要你先安装了Stack.(只需要$PATH适当地设置你.)
  • 分发预先构建的二进制文件:最终用户会很好,也很容易,但至少在OS X上,我需要担心代码签名,我甚至都没有为此设置身份.

所以,在我的README中,我现在提到了两者stack installcabal install.但2016年的最佳做法是什么?

haskell cabal haskell-stack

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

使用foldl和没有样板的Reader monad递归地行走AST

我穿越了AST使用简单的模式匹配,并Reader单子.

在我的项目的其他地方,我已经定义了一个walk遍历AST 函数,函数的核心用于foldl将访问树中每个节点的结果减少为单个幺半群结果(例如,从特殊结果生成"符号表")树中的节点).

我的问题是:是否可以将这两种方法结合起来并使用像我的函数这样的walk函数:

walk :: Monoid a => (Node -> a) -> a -> Node -> a
walk f acc n = foldl (walk f) (acc <> f n) children
  where
    children = case n of
      Blockquote b           -> b
      DocBlock d             -> d
      FunctionDeclaration {} -> functionBody n
      List l                 -> l
      ListItem i             -> i …
Run Code Online (Sandbox Code Playgroud)

monads haskell parsec fold reader-monad

3
推荐指数
1
解决办法
389
查看次数

标签 统计

haskell ×2

cabal ×1

fold ×1

graphql ×1

haskell-stack ×1

monads ×1

parsec ×1

reader-monad ×1

relayjs ×1