那些看似没用的东西

1. const函数

我们看看const函数的声明:

ghci> :t const

const :: a -> b -> a

这个函数实际效果是给定两个参数,它返回第一个参数,也就是返回结果和第二个参数没有一毛钱关系。

我们看看实际运行效果:

ghci> const 1 "nouse"

1

ghci> const 1 undefined

1

这个东西为啥有用,我们说得简单一点:如果你要用到某个函数F,这个函数的原型要求你必须给他提供另外一个函数G作为参数,而F的规约是G的参数必须由F提供,但是G对F提供的参数实在没有兴趣,而处于规约要求,你只能找个折中的方法,即我接受F传递过来的参数,但是我不使用。举例如下:

x >> y = x >>= const y  (注意>>=会把左边的Monad转换为一个正常值后传到给右边的函数,即 (>>=) :: Monad m => m a -> (a -> m b) -> m b)

实际它和下面是同样的效果,但是看上去更加简洁

x>>y = x>>= \_-> y

2. id

ghci>  :t id

id :: a -> a

id把它的参数原样返回。这有啥用? 同样的道理,有些函数调用的格式上要求你提供一个函数,它在给你传递一个值让你处理,而你实际上不想做任何处理(只想原样进来,原样出去)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目类型 a.C++与C差异(1-18) 1.C和C++中struct有什么区别? C没有Protection行为...
    阿面a阅读 12,303评论 0 10
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,851评论 0 17
  • 《ijs》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 10,821评论 0 7
  • 1.函数参数的默认值 (1).基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。
    赵然228阅读 4,044评论 0 0
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 9,272评论 0 6