当前位置:网站首页 > Haskell函数式编程 > 正文

haskell函数式编程入门 第二版 pdf_编程

上篇文章,Haskell的魔法 - 函数式编程初探之一 我们见识了如何定义一个函数。

add x y = x + y

参数x、y的类型和函数add的返回值类型不用声明,系统自动推导出它们都是数字型。

add函数是范型函数,适用于所有数字型,例如整数、浮点数类型等。

对于Java、C等程序员,这无异于魔法。Python程序员笑了,这不就是我们Python的妙处吗?没什么特别的。真是这样吗?

对比一下Python版本

def add(x, y): return x + y

Python的add函数有一个致命缺陷。在代码中调用add("hi", 2),程序在运行时出错。与之对比,Haskell代码中写出add "hi" 2调用add函数,程序在编译时报错。Haskell程序员比Python程序员先遇到错误,不纠正,Haskell代码连编译也通不过。而Python代码在运行时,碰到调用该函数时才触发错误。

Haskell函数还有一个魔法,称为部分函数

部分函数

看一个实际的例子。判定一个数x是不是被数q整除。函数名为操作符%%。

(%%) x q = x `rem` q == 0

据此,我们可以衍生出无数部分函数来满足使用。

整除3 = flip (%%) $ 3 div3 = flip (%%) $ 3

Haskell创造来更简便的书写部分函数的形式

(%%)17 -- 被17整除

怎么使用这些部分函数呢?演示一个例子。我们要根据条件筛选出满足条件的数。

1, 2, 3, 4, 5, 5, 6,7, 8, 9, 10

Haskell提供filter函数用来从列表中筛选符合条件的值。filter的调用形式如下

filter condition 列表

条件为:所有被3整除的数

filter (%%3) [1, 2, 3, 4, 5, 5, 6,7, 8, 9, 10] filter div3 [1, 2, 3, 4, 5, 5, 6,7, 8, 9, 10]

条件改为:所有被7整除的数

filter (%%7) [1, 2, 3, 4, 5, 5, 6,7, 8, 9, 10]

啊!多么灵活。只要我们定义好整除函数,就能从中产生无穷多整除部分函数,不用多写任何代码。想想吧,用C/C++如何应对上述例子?

下期介绍Haskell魔法三 -- 函数组合


喜欢就点赞。 更多精彩,请关注我

今日头条号/西瓜视频/抖音:IT之州

相关文章

Haskell最美

Haskell的魔法 - 函数式编程初探之一

到此这篇haskell函数式编程入门 第二版 pdf_编程的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 函数式编程的 Java 编码实践:利用惰性写出高性能且抽象的代码2024-11-17 09:45:06
  • haskell functor_scratch游戏代码2024-11-17 09:45:06
  • 如何从面向过程与面向对象转换过来_函数式编程和面向对象的区别2024-11-17 09:45:06
  • haskell函数式编程入门_python定义函数的规则2024-11-17 09:45:06
  • java函数式编程的好处_Java语言程序设计2024-11-17 09:45:06
  • haskell 函子_shell中if判断2024-11-17 09:45:06
  • 从面向对象切换到函数式编程2024-11-17 09:45:06
  • haskell 函子_编程2024-11-17 09:45:06
  • java函数式编程 pdf_函数式编程 java2024-11-17 09:45:06
  • haskell函数式程序设计_python pos函数2024-11-17 09:45:06
  • 全屏图片