当前位置:网站首页 > R语言数据分析 > 正文

haskell functor_C语言必背代码

上篇文章,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 functor_C语言必背代码的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • perl语言教程_python教学软件2024-11-19 20:27:07
  • perl语言入门视频_perl菜鸟教程2024-11-19 20:27:07
  • perl模块_c语言mod什么意思2024-11-19 20:27:07
  • Perl语言入门学习2024-11-19 20:27:07
  • perl语言是干嘛的_易语言编过厉害的软件2024-11-19 20:27:07
  • 什么是事务脚本模型_redis的事务2024-11-19 20:27:07
  • objectc入门_characteristic2024-11-19 20:27:07
  • dart语言_dart语言值得学吗2024-11-19 20:27:07
  • dart语言能干什么_学语言2024-11-19 20:27:07
  • dart语言菜鸟教程_AI大语言模型是什么2024-11-19 20:27:07
  • 全屏图片