如何编写 Monad 将计算链接在一起
我正在编写我的第一个 monad 实例,所以如果我遗漏了一些明显的东西,请原谅。 我想做这样的事情: readStuffFromDatabase >>= function1 >>= ... >>=…
避免 WebSocket 库的多线程问题
WebSockets 库包含一个开放的 有关从多个线程发送消息的问题。 作为示例,我查看了 websocket-shootout,并注意到 接收数据。 void $ fork $ silentLo…
Xmonad 在屏幕上仅显示 1 个窗口
我今天决定尝试 Xmonad 并将其安装在带有 Arch linux 的 VM 上。如果没有间距,它可以完美地工作,但是当我添加它时,Xmonad 只在屏幕上显示一个最新…
Haskell 包不在 Stackage 上,那怎么办?
我想使用 HList:异构列表,但该包似乎不在 Stackage 上。 我目前使用堆栈。在这种情况下,除了返回使用 Cabal 之外还有什么选择?…
作为参数提供的构造函数的模式匹配
我有一个类似这样的类型: data MyType = I Int | C Char -- and lots of other options 我希望能够找出该类型的值是否是特定变体。我可以使用模式匹…
如何使用lens访问sum类型后面的记录字段
我正在尝试使用 Haskell 中的透镜和棱镜访问嵌套记录: import Data.Text (Text) import Control.Lens.TH data State = State { _stDone :: Bool , _s…
Haskell 纯函数和文件
我读过这篇关于 Haskell IO 方法的文章: https://wiki.haskell.org/IO_inside 我了解 getChar 的工作原理,但我不知道如何使以下函数纯 getFile :: S…
如何对无限列表使用任意值?
我有以下帮助功能: -- Generator for variable names instance Arbitrary VarName where arbitrary = VarName elements ["A", "B", "_0", "_"] 用于…
如何在Haskell中遍历包含各种/不同类型的列表/元组?
在某些情况下,作为通用术语的列表/元组中包含的值的类型是不同的。 例如, length 具有多态性, Prelude> length [7,5,3] 3 Prelude> length ["foo",…
Haskell 使用 >=> 编写 >>=单子
(>=>) :: Monad m => (a -> m b) -> (b -> m c) -> (a -> m c) bind :: Monad m => m a -> (a -> m b) -> m b -- 如何使用>=>来编写bind? 我非常困惑…
在 Haskell 中映射 `IO (S (也许是 a))`?
基于 Data.Typeable 转换和 Maybe 模式匹配行为Haskell 我有 一个结构:data S a = S {val :: IO a} 一个结构:S (Maybe a)) 一个结构:IO (S (Maybe …
怀疑列表列表声明错误,不知道如何更正
我正在尝试获取列表列表并打印所有列表中找到的最大值。我有一个我认为应该起作用的函数,但我相信我声明值的方式引起了问题。 nested_max :: [[Int]]…