小编Vam*_*bhi的帖子

你如何解释这个haskell表达式中绑定运算符的关联性?

没有任何括号:

Prelude> [1,2] >>= \n -> ['a', 'b'] >>= \ch -> return (n, ch)
[(1,'a'),(1,'b'),(2,'a'),(2,'b')]
Run Code Online (Sandbox Code Playgroud)

假设左关联性的括号:

Prelude> ([1,2] >>= \n -> ['a', 'b']) >>= \ch -> return (n, ch)
<interactive>:22:49: Not in scope: `n'
Run Code Online (Sandbox Code Playgroud)

假设正确关联的括号:

Prelude> [1,2] >>= (\n -> ['a', 'b'] >>= \ch -> return (n, ch))
[(1,'a'),(1,'b'),(2,'a'),(2,'b')]
Run Code Online (Sandbox Code Playgroud)

是不是>>=联想?如果没有括号,为什么GHCi >>=会将表达式评估为正确关联?

monads haskell

17
推荐指数
1
解决办法
1200
查看次数

我应该选择哪种Yesod的Warp和snap-server用于高性能应用服务器?

我在Yesod的主页上看过基准测试,但它们主要用于静态文件.Snap网站上的基准测试已经过时了.

我正在尝试将Haskell模块公开为服务.服务器的逻辑是在json中接收函数名和参数,调用haskell函数并再次将输出作为json传递.引用透明性保证了线程安全性以及记忆和缓存功能的能力.

如果我支持大约2k - 5k的并发连接,我将如何实现它?这种方法的可扩展性如何?

haskell happstack yesod haskell-snap-framework

5
推荐指数
2
解决办法
2283
查看次数

如何从Haskell中的语法规范构建抽象语法树?

我正在开发一个项目,该项目涉及在一小部分Java中优化某些构造,在BNF中形式化.

如果我在Java中这样做,我会使用JTB和JavaCC的组合来构建AST.然后访客用于操纵树.但是,考虑到在Haskell中解析庞大的库(parsec,happy,alex等),我在选择合适的库时有点困惑.

那么,简单地说,当在BNF中指定一种语言时,哪个库提供了构建AST的最简单方法?在惯用的Haskell中修改这棵树的最佳方法是什么?

haskell parsec abstract-syntax-tree zipper happy

5
推荐指数
2
解决办法
2182
查看次数