摘要: 上节我们介绍了新的数据类型Option:一个专门对付异常情况出现时可以有一致反应所使用的数据类型。Option可以使编程人员不必理会出现异常后应该如何处理结果,他只是获得了一个None值,但这个None值与他所期待的类型是一致的,他可以继续用处理这种类型数据的方法使用这个结果。不过遗憾的是我们通... 阅读全文
posted @ 2015-03-15 11:28 雪川大虫 阅读(1359) 评论(1) 推荐(0)
摘要: Option是一种新的数据类型。形象的来描述:Option就是一种特殊的List,都是把数据放在一个管子里;然后在管子内部对数据进行各种操作。所以Option的数据操作与List很相似。不同的是Option的管子内最多只能存放一个元素,在这个方面Option的数据操作就比List简单的多,因为使... 阅读全文
posted @ 2015-03-14 00:12 雪川大虫 阅读(1923) 评论(1) 推荐(0)
摘要: 上节介绍了泛函数据结构List及相关的泛函编程函数设计使用,还附带了少许多态类型(Polymorphic Type)及变形(Type Variance)的介绍。有关Polymorphism的详细介绍会放在typeclass讨论中。为了更多了解泛函数据结构(Functional Data Stru... 阅读全文
posted @ 2015-03-12 12:14 雪川大虫 阅读(1380) 评论(3) 推荐(1)
摘要: 泛函编程和数学方程式解题相似;用某种方式找出问题的答案。泛函编程通用的方式包括了模式匹配(pattern matching)以及递归思维(Recursive thinking)。我们先体验一下:(在阅读本系列博客文章之前,相信读者已经对Scala语言及REPL用法有所了解了。在这就不去解释Scal... 阅读全文
posted @ 2015-03-12 08:28 雪川大虫 阅读(1554) 评论(0) 推荐(2)
摘要: 折叠算法是List的典型算法。通过折叠算法可以实现众多函数组合(function composition)。所以折叠算法也是泛函编程里的基本组件(function combinator)。了解折叠算法的原理对了解泛函组合有着至关紧要的帮助。折叠算法又可分右折叠和左折叠。我们先从右折叠(foldR... 阅读全文
posted @ 2015-03-11 18:54 雪川大虫 阅读(2870) 评论(2) 推荐(2)
摘要: List是一种最普通的泛函数据结构,比较直观,有良好的示范基础。List就像一个管子,里面可以装载一长条任何类型的东西。如需要对管子里的东西进行处理,则必须在管子内按直线顺序一个一个的来,这符合泛函编程的风格。与其它的泛函数据结构设计思路一样,设计List时先考虑List的两种状态:空或不为空两... 阅读全文
posted @ 2015-03-10 21:39 雪川大虫 阅读(1416) 评论(4) 推荐(2)
摘要: 编程即是编制对数据进行运算的过程。特殊的运算必须用特定的数据结构来支持有效运算。如果没有数据结构的支持,我们就只能为每条数据申明一个内存地址了,然后使用这些地址来操作这些数据,也就是我们熟悉的申明变量再对变量进行读写这个过程了。试想想如果没有数据结构,那我们要申明多少个变量呢。所以说,数据结构是... 阅读全文
posted @ 2015-03-10 09:09 雪川大虫 阅读(1141) 评论(0) 推荐(2)
摘要: 既然是泛函编程,多了解一下函数自然是免不了的了:方法(Method)不等于函数(Function)方法不是函数但可以转化成函数;可以手工转换或者由编译器(compiler)在适当的情况下自动转换。反向转换则不然;函数是无法转换到方法的。先看看下面的例子:1 scala> def aMethod(x:... 阅读全文
posted @ 2015-03-09 14:00 雪川大虫 阅读(1619) 评论(0) 推荐(0)
摘要: 接着昨天的文章,再示范一个稍微复杂一点的尾递归tail recursion例子:计算第n个Fibonacci数。Fibonacci数第一、第二个数值分别是0,1,按顺序后面的数值是前面两个数的加合。例如:0,1,1,2,3,5... 1 def fib(n: Int): Int = { 2 ... 阅读全文
posted @ 2015-03-09 13:39 雪川大虫 阅读(1587) 评论(0) 推荐(1)
摘要: 泛函编程就是把函数组合起来形成一个完整的程序。可想而知,函数组合的过程可以是曲折的,形成的程序可以是复杂的。那么泛函编程又是如何保证一个复杂的函数组合程序是正确无误的呢?首先,泛函编程的函数组合(Functional Composition)遵循一定的数学定律(Mathematical Laws),... 阅读全文
posted @ 2015-03-09 13:31 雪川大虫 阅读(2061) 评论(0) 推荐(0)