Scalaz(0) - 写在前面

  面向对象编程范畴(OOP)从80年代C++到90年代java的兴起已经经历了几十年的高潮,是不是已经发展到了尽头,该是函数式编程(FP)开始兴旺发达的时候了吧。这样说似乎心眼儿有点坏,可能会得罪当今大多数的编程人员。不过计算机硬件技术的发展往往会催生新的编程技术,这倒是无可反驳的现象。当今世界上计算机行业中大数据、电子商务、多核CPU,高并发网络的普及使得C++,java这些OOP范畴的编程语言显得那么地不尽人意,函数式编程范畴的编程语言将成为主流,这应该是句大实话了吧。

  说到函数式编程(FP)我们常常会联想到以下几个方面:

1、不可变性 - Immutability

2、函数既值 - Function as value

3、无副作用 - No side effects

这几样特性可以很好地解决多核CPU、多线程、高并发问题。

scala是个OOP和FP混合范畴的编程语言。这是因为考虑到那么许多从OOP世界过来的编程人员可以尽快上手,而且有许多问题可能用OOP方式能得到更好的解决。但重要的是在使用scala编程中到底以OOP还是FP为主。如果我们采用scala的FP为主的话,scala标准库(sdandard library)中的数据类型和函数组件就显得不足够应付,我们必须在用scala FP开发软件前准备好一套较为完整的函数组件库(combinator library)。幸运的是我们现在有了scalaz,它使我们在泛函编程的道路上节省了一大段路程。

  scalaz是一套用scala语言编写的函数库。scalaz为用户提供了大量的数据类型和组件函数来支持函数式编程。实际上scalaz的代码贡献者们是受到了纯函数式编程语言haskell的启发,把haskell中的数据类型、结构、函数组件在scalaz中用scala进行了重新实现。既然我们打算采用scala的FP,我们可能必须把scalaz作为基础组件库来使用,那么我们必须首先了解scalaz的库结构、里面各种数据类型和组件函数、掌握它们的使用方式以及应用模式。

  当然,在学习和介绍scalaz的过程中我们还可以更多了解scala的函数式编程模式以及它所著名的贴切简洁的表现形式。

让我们期待这个系列的scalaz讨论能真正的把我们带入函数式编程范畴的世界。。。

时间: 2024-12-31 19:11:14

Scalaz(0) - 写在前面的相关文章

工程-vc++6.0写的程序用vs2010打开需要改变些什么

问题描述 vc++6.0写的程序用vs2010打开需要改变些什么 要整理一个程序 ,不是自己写的,原来是vc++6.0写的,现在用vs2010打开报一些很奇怪的错,都指向头文件,complex 还有string 搞了很长时间了,哪位大神给解答一下,小弟感激不尽啊,谢谢 解决方案 这可能是头文件的错误.因为不同的编译器可能将库文件放在不同的头文件中,所以要想把错误改正,需要了解需要的头文件放在那个库中.其实用遵循统一标准的编译器就可以避免这些问题,可以用linux gcc 编译器! 解决方案二:

编译出错-用vs2013编译之前用vc++6.0写的程序报错

问题描述 用vs2013编译之前用vc++6.0写的程序报错 用vs2013编译之前用vc++6.0写的程序 以上是报错代码 错误 1 error MSB8021: The value '{0}' of the variable '{1}' is incompatible with the value '{2}' of the variable '{3}'. C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V120Microsoft.CppBuild.t

vc6 0-再用VC6.0写代码的时候怎样让编辑窗口不要最大化

问题描述 再用VC6.0写代码的时候怎样让编辑窗口不要最大化 我想多打开几个头文件或者cpp文件,但是窗口都是最大化的,一次只能显示一个文件,想要点开另一个很麻烦,求问怎样才能让现在最大化的编辑窗口可以改变大小,并且再右上角出现最大化最小化和关闭的按钮 解决方案 选择windows--->Casecade 即可解决

《冰与火之歌》竟是在DOS下用WordStar 4.0写出的

<冰与火之歌>竟是在DOS下用WordStar 4.0写出的小说<冰与火之歌>大家应该 都有所耳闻,改编的同名美剧央视也在播出.<冰与火之歌>的作者乔治·马丁不久前在一档脱口秀节目中透露了一个鲜为人知的秘密.乔治·马丁表示,他写作的工具是一台装着DOS系统的电脑,用着著名的WordStar 4.0软件.在Office办公软件大行其道的今天.乔治·马丁依旧固执地使用着WordStar 4.0 for 来写小说.至于原因,乔治·马丁说他喜爱WordStar 4.0的简洁,不

yii2.0 写报错页面

yii2.0 class BaseController extends \yii\web\Controller{ public function error($msg,$url){ $params = array('msg'=>$msg,'url'=>$url,'status'=>false); echo \Yii::$app->view->renderFile('@app/views/base/error.php',['params'=>$params]); Yii:

我有个程序是用VC++8.0写的DDK程序,用什么编译,哪里有下载?

问题描述 RT 解决方案 解决方案二:你得下相应版本的DDK解决方案三:接分是王道!

EJB 3.0+Aspect实现声明性编程初步

编程 提要 本文将与你一同探讨怎样把注解和方面的威力联合起来,以与EJB 3.0兼容的方式为企业实现提供声明性服务,而在同时仍然提供容器的独立性. 一. 引言 在我们共同寻求进一步提高软件开发生产性能的方法的过程中,我们-作为Java社团成员-一般都转向J2EE来提供针对企业开发中更具挑战性的技术问题如分布式事务管理.并发性和对象分布等的解决方案.其背后的指导思想-这些复杂的企业服务能被应用程序服务器供应商所实现并能为商业开发者所平衡-的确是一种很好的思想.J2EE,具体地说是EJB,已成功地提

MySprite 2.0

/** 为MIDP1.0写的Sprite类的升级版本 * <p>Title: 精灵类</p> * * <p>Description: </p> * * <p>Copyright: Copyright (c) 2004</p> * * <p>Company: </p> * * @author not attributable * @version 1.0 */import javax.microedition.l

用Flex3.0 做一个简单Flv 播放器

今天早上, 以前高中同学要我教他用 Flex 写一个flv播放器. 网上应该也有不少的教程了, 但中午吃完饭后, 觉得自己写写也不错, 毕竟自己很少在自己博客上写教程, 于是就写写了..... 有错误请高手指出..以下为我今天写在博客上的一篇简单教程: 用 AS2.0 做的 flv 播放器不少了, Flex 3.0 早期又出了, 就尝试着做一个 flv 播放器. 用 Flex3.0 写出来的东西, 本人觉得, 其产物可以是 flex , 也可以是 AIR ( 早期的Apollo ).  好了,