小编use*_*184的帖子

使用Functors或其他类型类免费获得哪些功能?

我读了一篇文章说:

为许多标准类型类[Functors]提供实例将立即为您提供许多实际上免费的功能

我的问题是:你获得的免费功能(对于仿函数或其他类型类)是什么?我知道一个仿函数的定义是什么,但我该怎么得到免费的东西定义为仿/其他类型的类.除了更漂亮的语法之外的东西.理想情况下,这将是对仿函数/其他类型类进行操作的通用和有用函数.

自由意味着什么是这种功能的想象(可能是错误的): TypeClass x => useful x y = ..

==编辑/添加==

我想我主要是询问更抽象(和令人难以置信的)类型类,就像这张图片中的类型一样.对于像Ord这样不太抽象的类,我的面向对象直觉理解.

haskell functor typeclass

11
推荐指数
2
解决办法
442
查看次数

可组合的原子类操作

我想编写可能失败的操作,但有一种方法可以回滚.

例如 - 预订酒店房间的外部电话,以及向信用卡收取的外部电话.这两个电话都可能失败,例如没有房间,信用卡无效.两者都有办法回滚 - 取消酒店房间,取消信用卡收费.

  1. 这种(非真实的)原子是否有名称.每当我搜索haskell交易时,我都会得到STM.
  2. 是否有抽象,组合它们的方式,或haskell或任何其他语言的库?

我觉得你可以编写一个monad Atomic T来跟踪这些操作,如果有异常则将它们回滚.

编辑:

这些操作可以是IO操作.如果操作只是内存操作,正如两个答案所示,STM就足够了.

例如,通过HTTP请求预订酒店.数据库操作,例如通过套接字通信插入记录.

在现实世界中,对于不可逆转的操作,在操作完成之前有一段宽限期 - 例如,信用卡付款和酒店预订可以在当天结束时结算,因此在此之前可以取消.

haskell transactions atomic

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

标签 统计

haskell ×2

atomic ×1

functor ×1

transactions ×1

typeclass ×1