当前位置: 首页 > 知识库问答 >
问题:

函数的functor/application/monad实例的用例

巫墨一
2023-03-14

Haskell有functorapplicationmonad实例,这些实例是为标准库中的函数(特别是部分应用的类型(->)A)定义的,围绕函数组合构建的。

理解这些实例是一个很好的让人省心的练习,但我这里的问题是关于这些实例的实际用途。我很乐意听到人们使用这些代码的现实场景。

共有1个答案

吴浩皛
2023-03-14

例如,(+)<$>(*2)<*>(subtract1)是涉及函数的函数和应用实例的常见模式。当您必须为一系列函数提供单个值时,这特别有用。在本例中,上面的代码等效于\x->(x*2)+(x-1)。虽然这与lifta2非常接近,但您可以无限期地扩展此模式。如果您有一个f函数要接受5个参数,比如a->a->a->a->a->a->a->b,那么您可以像f<$>(+2)<*>(*2)<*>(+1)<*>(subtract3)<*>(/2)那样为它提供一个值。就像下面的情况;

Prelude> (,,,,) <$> (+2) <*> (*2) <*> (+1) <*> (subtract 3) <*> (/2) $ 10
(12.0,20.0,11.0,7.0,5.0)

编辑:我在另一个主题下的评论是@Will Ness的重新评论,这里有一个应用于函数的美丽用法;

Prelude> let isAscending = and . (zipWith (<=) <*> drop 1)
Prelude> isAscending [1,2,3,4]
True
Prelude> isAscending [1,2,5,4]
False
 类似资料:
  • Haskell中的函子是一种可以映射不同类型的函数表示。它是实现多态性的高级概念。根据Haskell开发人员,列表、映射、树等所有类型都是Haskell函数的实例。 函子是一个内建的类,它的函数定义类似 − 根据这个定义,可以得出这样的结论:Functor是一个函数,它接受一个函数,比如,然后返回另一个函数。在上面的例子中,是函数的一种通用表示。 在下面的示例中,我们将看到Haskell Func

  • Haskell中的Functor是一种可以映射的不同类型的函数表示。 它是实现多态性的高级概念。 根据Haskell开发人员的说法,所有类型如List,Map,Tree等都是Haskell Functor的实例。 Functor是一个内置类,其函数定义如下 - class Functor f where fmap :: (a -> b) -> f a -> f b 通过这个定义,我们可

  • 本文向大家介绍php的dl函数用法实例,包括了php的dl函数用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php的dl函数用法。分享给大家供大家参考。具体如下: PHP的dl函数官网说明如下: http://www.php.net/manual/en/function.dl.php 具体用法示例如下: 这样只要php.ini中配置好就可以不要再引用so文件不然会说多处引用 希望

  • 本文向大家介绍jQuery中toggle()函数的使用实例,包括了jQuery中toggle()函数的使用实例的使用技巧和注意事项,需要的朋友参考一下 今天遇到一个有趣的例子,将它记录下来。 一个一级菜单,里边有一个二级菜单,二级菜单是通过锚点来链接页面元素的。想要实现的效果是当点击锚点时,页面链接到相应锚点,同时二级菜单隐藏,再点击一级菜单时,继续执行。。 其中试了很多种方法都不行,最后通过读j

  • 本文向大家介绍JavaScript中的ubound函数使用实例,包括了JavaScript中的ubound函数使用实例的使用技巧和注意事项,需要的朋友参考一下 JavaScript中ubound函数方法是返回在 VBArray 的指定维中所使用的最大索引值。使用方法: 其中safeArray是必选项。是一个 VBArray 对象。 dimension是可选项。要获知其索引上界的 VBArray 的