Haskell趣学指南学习日记(1)

原创 2015年07月07日 21:28:14

什么是Haskell


Haskell是一门函数式编程语言,与面向对象编程语言不同,它是面向函数来完成程序设计的。(废话)

起步


它的所有操作符和C#基本没有什么不同,除了^运算符,其实这个也比较常见,它是幂运算符。

调用函数

前缀,中缀,后缀

在此之前,我们先搞清楚前缀运算符,中缀运算符,和后缀运算符的概念。其实概念也一目了然,运算符在数据前面则称为前缀运算符,以此类推。

举一个典型例子,静态语言中的所有函数几乎都是前缀运算符:

printf("Hello Wolrd!");

当然最典型的前缀运算符当然是++了:

int i = 1;
++i;//2

中缀运算符在静态语言中一般是二元运算符,如+ - * /

那么后缀运算符则是:

int i = 2;
i--;//1

Haskell的两种函数调用方法

下面两种形式的效果是一样的,都代表5除以1,不过却可以有不同的表达方式

1.前缀

div 5 1

2.中缀

5 `div` 1

div两边是反引号,键盘左上角的那个

相比于第一种,第二种更能一眼看出谁是除数,谁是被除数(真的么?= =)

定义函数

相比于其他,Haskell中的函数定义要简单一些:

doubleMe x = x*2

函数名:doubleMe
参数:x
返回:x*2

奇特的if语句

if语句大家应该都不陌生了,不过Haskell中的if语句貌似有点傲娇。。。它必须要你定义else语句,否则则会出现语法错误:

doubleSmallNumber x = if x > 100
                      then x
                      else x*2

else是必要的

列表

字符串

Haskell中的字符串只是语法糖,它实际上是一个单字符数组,下面这个字符串

str1 = "Hello World!"

相当于这个

str2 = ['H','e','l','l','o',' ','W','o','r','l','d','!']

列表的拼接

插入元素

取列表的第一个元素和最后一个元素

更多列表操作请查阅官方文档。

版权声明:如果你觉得作者有什么错误的地方,可以在评论区里指出来。

Haskell趣学指南7-8

  模块装载模块haskell中的模块是含有一组相关的函数,类型和类型类的组合。而haskell程序的本质便是从主模块中引用其它模块并调用其中的函数来执行操作。这样可以把代码分成多块,只要一个模块足...
  • zwjsatan
  • zwjsatan
  • 2010年08月28日 13:43
  • 6521

Haskell趣学指南学习日记(4)-强大的函数

函数基础Haskell是一门函数式语言,他的核心用法也是围绕着函数所展开的,所以它本身也自带了一套十分强大的函数系统。模式匹配进阶前面我们谈到了Haskell的模式匹配,其实就是将函数的参数显示定义,...
  • github_29370025
  • github_29370025
  • 2015年07月11日 18:28
  • 247

Haskell趣学指南4-6

  函数的语法模式匹配本章讲的就是haskell那套酷酷的语法结构,先从模式匹配开始。模式匹配通过检查数据的特定结构来检查其是否匹配,并按模式从中取得数据。在定义函数时,你可以为不同的模式分别定义函...
  • zwjsatan
  • zwjsatan
  • 2010年08月28日 13:40
  • 6076

Haskell趣学指南学习日记(3)

Haskell的类型系统Haskell与弱类型语言不太一样,它拥有一个完善的类型系统,虽说完善,但是也非常简单,下面稍微就稍微列举一下: Int Integer Float Double Bool C...
  • github_29370025
  • github_29370025
  • 2015年07月09日 21:33
  • 233

Haskell趣学指南学习日记(2)

列表推导式在Haskell中,列表推倒式绝对是我见过最厉害的推倒了(什么鬼),哦不是,是最厉害的一个特性了。还记得我在小学一年级的时候,在公堂之上。。。不对,是高中的时候,接触到了列表推倒式。它的语法...
  • github_29370025
  • github_29370025
  • 2015年07月08日 15:24
  • 333

趣学Python-教孩子学编程--第三章

知识点: 1、字符串      1>字符串可以用单引号(' ')、双引号(" ")、三引号(''' ''')来表示。      2>不同之处在于,三引号可以创建不止一行的字符串。      3...
  • wangluoershixiong
  • wangluoershixiong
  • 2015年11月28日 18:50
  • 937

Haskell趣学指南1-3

 Haskell趣学指南 简介关于这个教程欢迎来到haskell趣学指南!阅读此文表明你正要学haskell。很好,来对地方了,先容我简单介绍一下这个教程。编写这个教程,一方面是为了巩固我自己对has...
  • zwjsatan
  • zwjsatan
  • 2010年04月27日 10:21
  • 6484

趣学算法系列-贪心算法

趣学算法系列-贪心算法声明:本系列为趣学算法一书学习总结内容,在此推荐大家看这本算法书籍作为算法入门, 原作者博客链接,本书暂无免费电子版资源,请大家支持正版第二章 贪心算法 一个贪心算法总是做...
  • wwlcsdn000
  • wwlcsdn000
  • 2017年11月21日 15:25
  • 1149

haskell 趣学指南笔记-1type and typeclass

几个type 类型 Int 有界 Integer无界,效率低于Int Float Double Bool Char 几个typeclass 类型 :t (==) (==)::(Eq ...
  • gruduate
  • gruduate
  • 2013年10月20日 18:48
  • 689

《趣学算法》源码

《趣学算法》书中的所有源码
  • rainchxy
  • rainchxy
  • 2017年07月13日 10:05
  • 2104
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Haskell趣学指南学习日记(1)
举报原因:
原因补充:

(最多只允许输入30个字)