-- 函数名首字母必须小写,可以包含 '来表示该函数严格求值版本(与惰性求值相对)
doubleMe x = x + x
doubleUs x y = doubleMe x + doubleMe y
doubleUs' x y = x * 2 + y * 2 -- 给小于等于100的数乘以2
doubleSmallNumber x = if x > 100
then x
else x * 2 -- 上述函数执行结果+1
doubleSmallNumber x = (if x > 100 then x else x * 2) + 1 {-无参函数称为定义或名字,函数定义后再也无法修改其内容,
conanO'Brien 与 字符串 "It's a-me, Conan O'Brien!" 等价-}
conanO'Brien = "It's a-me, Conan O'Brien!" -- 列表推导式,与数学中集合表达相似 -- 将numbers列表中的数乘以2,并返回新列表
doubleNumbers numbers = [x * 2 | x <- numbers]
-- 添加谓词
doubleNumbersPr numbers = [x * 2 | x <- numbers, x * 2 > 20]
-- 上述函数的另一个版本
doubleNumbersPr' numbers = [x | x <- doubleNumbers numbers, x > 20]

Haskell-chp01的更多相关文章

  1. Haskell 函数式编程快速入门【草】

    什么是函数式编程 用常规编程语言中的函数指针.委托和Lambda表达式等概念来帮助理解(其实函数式编程就是Lambda演算延伸而来的编程范式). 函数式编程中函数可以被非常容易的定义和传递. Hask ...

  2. Haskell Platform (windows)

    一.下载地址:https://www.haskell.org/platform/windows.html Haskell Platform 整合了 Glasgow Haskell Compiler,W ...

  3. Haskell 参考资料

    1.Haskell 中文社区:www.haskellcn.org 2.Haskell   官网:     www.haskell.org 3.Haskell   函数查询:www.haskell.or ...

  4. 函数式编程语言LISP,python,haskell,clojure

    说说我自己的背景吧,我是个半吊子的程序员,做任何事情喜欢比较了解然后再尝试,我接触过很多语言,大多数都把它当成工具来使用 我现在的工作大部分主要在于数据挖掘与机器学习方面,也学习web开发,我第一个拿 ...

  5. Haskell 笔记 ③

    ①循环?NO!请递归思考问题! 手艹一个求列表中最大值代码,C语言中习惯性for扫一下比较出最大值.但是可以用递归! maximum'::(Ord a)=>[a]->a maximum' ...

  6. haskell中的cps

    cps全称叫continuation passing style,简要来讲就是告诉函数下一步做什么的递归方式,由于普通递归有栈溢出的问题,而cps都是尾递归(tail recursion),尾递归则是 ...

  7. haskell中的monad

    monad本意是单子.在haskell中,第一个接触的基本都是IO action,通过把IO动作包装起来我们能很方便的与现实世界进行数据交换.但其实monad的用途不止如此,monad还能讲一系列操作 ...

  8. haskell中的let和where

    haskell中有两种定义局部变量的方法let和where,方法分别如下 roots a b c = ((-b + det) / (a2), (-b - det) / (a2)) *a*c) a2 = ...

  9. haskell io模块

    haskell中的io模块主要是用于读写文件屏幕的,通过import IO来导入 其中有如下常用定义 data IOMode = ReadMode | WriteMode | AppendMode | ...

  10. haskell中的do

    在haskell中,有一个do的语句专门用来做一些不那么“干净”的事情,比如读写都需要用do来开头 一开始以为do的作用是做monad,后来发现是错误的,其实do做的事情是包裹一个顺序操作 比如在如下 ...

随机推荐

  1. Lisp : (quote) code is data (eval) data as code

  2. xamarin Mqtt

    1 什么是MQTT? mqtt (Message Queuing Telemetry Transport,消息队列遥测传输)是 IBM 开发的一个即时通讯协议,有可能成为物联网的重要组成部分.MQTT ...

  3. MySQL基础-Linux从入门到精通第十天(非原创)

    文章大纲 一.关于数据库二.MySQL的安装与初始化三.MySQL的基本操作(难点)四.扩展五.学习资料下载六.参考文章   一.关于数据库 mysql的基础知识,可以参考文章:https://www ...

  4. LDA-作为线性判别 分类器 推导

    LDA, 即 Linear Discriminant Analysis, 中文翻译为, 线性判别分析. 比较有趣的一点是:LDA 既可以直接用作分类算法, 也可作为特征降维的方法. 给人感觉, 这是将 ...

  5. AAC的RTP封装中的AU头分析

      解码器收到一个RTP的AAC流,发现RTP流里的音频里带有4个字节AU头,然后才是AAC的ADTS头.     这种情况之前已经出现过多次,每次我们都告知对方,不要往AAC前面加AU头,解码器不支 ...

  6. MySQL服务的构成(二)

    一.什么是实例 这里的实例不是类产生的实例对象,而是Linux系统下的一种机制 1.MySQL的后台进程+线程+预分配的内存结构. 2.MySQL在启动的过程中会启动后台守护进程,并生成工作线程,预分 ...

  7. Skeleton-Based Action Recognition with Directed Graph Neural Network

    Skeleton-Based Action Recognition with Directed Graph Neural Network 摘要 因为骨架信息可以鲁棒地适应动态环境和复杂的背景,所以经常 ...

  8. jquery-ui提供的拖拽方法

    项目当中遇到了任意拖动div标签的功能,找到了jqueryui提供的draggable的插件,这个插件可以实现任意的div的移动,也可以移动到整个屏幕或者在父元素的范围内进行移动. 插件的api    ...

  9. nginx上传大文件,413错误解决

    在nginx里增加了配置. client_max_body_size 500m; proxy_connect_timeout 600; proxy_read_timeout 600; proxy_se ...

  10. django中运行定时任务脚本

    需要使用到django_apscheduler模块,因此先安装: pip install django-apscheduler 然后在工程的settings.py文件中的INSTALLED_APPS模 ...