小编the*_*ian的帖子

在Haskell中链接/组合类型类

假设我有两个类型定义如下,功能相同但名称不同:

class Monad m where
    (>>=)  :: m a -> (a -> m b) -> m b
    return :: a -> m a

class PhantomMonad p where
    pbind    :: p a -> (a -> p b) -> p b
    preturn  :: a -> p a
Run Code Online (Sandbox Code Playgroud)

有没有办法将这两个类绑定在一起,因此作为PhantomMonad实例的东西将自动成为Monad的实例,或者每个类的实例是否必须明确写入?任何见解都将非常感谢,谢谢!

monads haskell typeclass

10
推荐指数
3
解决办法
860
查看次数

Haskell中的作业调度

到目前为止,在Haskell中做了哪些工作来调度作业以本机方式执行?这是我正在思考的草图.

假设我有一个work我想要执行的功能Date,大概是将来(如果没有,我们可以安排它立即执行).在这种情况下,让我们假装有一种Jobmonad可以发生这种情况.

type JobId = ..
schedule :: Date -> Job () -> Job JobId
Run Code Online (Sandbox Code Playgroud)

这然后被传递到(优选持久)调度机制,这将在适当的时间执行预定作业,并且还提供某种形式的参考JobId,从而该作业可以检查或重新安排.我在Ruby中使用了几个不同的作业调度库,例如Delayed Job和Sidekiq.在Haskell社区中有关于作业调度问题的类似工作吗?也许在Haskell中,语言的本质使得模式足够简单,给定一些原始函数,库不是完全必要的?

haskell job-scheduling

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

Haskell中递归数据结构的高效序列化

我目前正在使用Haskell中的一些大型Trie结构,我从二进制文件构建.这个过程需要一些时间,我很好奇是否有一种通用的方法来快速(de)递归数据结构的序列化.对于大型文件和大型Tries,使用Show和Read类比从头开始构建尝试要慢得多.也许我做错了.

Trie的形状如下:

type Trie e a = T e [Trie e a]
Run Code Online (Sandbox Code Playgroud)

序列化这样的递归结构有哪些好的方法?另外,一般来说,这个问题的一些好方法是什么?

haskell

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

Google Calendar API事件忙/闲/阻止数据

我一直在使用Google Calendar API,并试图弄清楚如何判断一个日历应该被视为阻止时间的事件.例如,"哥伦布日"是美国许多人的全天活动(假日),对他们的工作日没有影响,但却出现在日历上.我在其他地方读过,通过使用每个帖子的透明度字段来判断事件是否在日历上被阻止的方式.但是,当我玩我的日历活动并来回切换时,活动本身在日历上始终保持"透明".

我的问题是: 有没有办法通过查看事件资源来判断事件是否阻止日历上的时间,或者这些信息应该是从忙/闲查询中得出的?

google-calendar-api google-api

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