为了账号安全,请及时绑定邮箱和手机立即绑定

什么是单曲?

什么是单曲?

最近对Haskell做了简要的回顾之后,什么才是简洁实用关于单曲本质上是什么的解释?我发现我遇到的大多数解释都很难理解,而且缺乏实际的细节。
查看完整描述

3 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

事实上,与人们对Monad的共识相反,它们与国家无关。Monad仅仅是一种包装事物的方法,并提供了对包装的东西进行操作的方法,而不需要对其展开包装。

例如,您可以在Haskell中创建一个类型来包装另一个类型:

data Wrapped a = Wrap a

包装我们定义的东西

return :: a -> Wrapped a
return x = Wrap x

若要在不展开包装的情况下执行操作,请假定您有一个函数。f :: a -> b,然后你可以这样做电梯该函数的作用是对包装好的值进行操作:

fmap :: (a -> b) -> (Wrapped a -> Wrapped b)fmap f (Wrap x) = Wrap (f x)

这就是我们要理解的一切。然而,事实证明,这样做有一个更通用的功能。起重,也就是bind:

bind :: (a -> Wrapped b) -> (Wrapped a -> Wrapped b)bind f (Wrap x) = f x

bind能做的比fmap,反之亦然。实际上,fmap只能根据bindreturn..所以,在定义单曲时.。你给出它的类型(这里是Wrapped a)然后说出它是如何returnbind行动有效。

最酷的是,这是一个如此普遍的模式,它弹出的地方到处都是,以一种纯粹的方式封装状态只是其中之一。

至于对单曲的理解,不要太担心。读一读你觉得有趣的东西,如果你不马上理解的话,不要担心。然后,只要潜入像Haskell这样的语言就可以了。单簧管就是这样一种东西,当你通过练习了解你的大脑时,有一天你突然意识到你理解了它们。


查看完整回答
反对 回复 2019-07-13
  • 3 回答
  • 0 关注
  • 548 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信