猿问

什么是单曲?

最近对Haskell做了简要的回顾之后,什么才是简洁实用关于单曲本质上是什么的解释?

我发现我遇到的大多数解释都很难理解,而且缺乏实际的细节。


万千封印
浏览 549回答 3
3回答

互换的青春

事实上,与人们对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 xbind能做的比fmap,反之亦然。实际上,fmap只能根据bind和return..所以,在定义单曲时.。你给出它的类型(这里是Wrapped a)然后说出它是如何return和bind行动有效。最酷的是,这是一个如此普遍的模式,它弹出的地方到处都是,以一种纯粹的方式封装状态只是其中之一。至于对单曲的理解,不要太担心。读一读你觉得有趣的东西,如果你不马上理解的话,不要担心。然后,只要潜入像Haskell这样的语言就可以了。单簧管就是这样一种东西,当你通过练习了解你的大脑时,有一天你突然意识到你理解了它们。
随时随地看视频慕课网APP
我要回答