Haskell 趣学指南 入门笔记(一)

废话少说。正题

什么是函数式语言,我的初步理解是:以函数为主导,函数构成函数。

 

现在编译器,后缀为.hs

跳过下载安装那部分。

我是windows 系统下

我自己又找了一个带图形界面的编辑器:winGhci

                                                  http://www.softpedia.com/get/System/Launchers-Shutdown-Tools/WinGhci.shtml

 

                                                 

挺简洁的

 有点类似python自带的那个

Haskell 函数为主体:

 

succ 是指下一个。

最奇怪的事 min ,max函数居然 可以不要括号。

 

 

注意一点 函数拥有最高的 优先级。]当然也可以自己封装函数啦。

 

 

 在winghci目录下新建i一个body.hs记事本

 

然后就可以在命令台下调用该函数:

 

 

然后是Haskell if 语句

最神奇的是:if 语句必须 跟else

 

 

body.hs函数

调用:

ps:函数不能以大写开头。。。(居然

 

列表:

1 *Main> let numbers=[1,2,3,4,5,6,7,8]
2 *Main> numbers
3 [1,2,3,4,5,6,7,8]

let是定义常量.类似c++ const?

也支持列表拼接。

1 *Main> [1,2,3,4,5]+[6,5,7,8]
2 
3 <interactive>:18:1:
4     Non type-variable argument in the constraint: Num [t]
5     (Use FlexibleContexts to permit this)
6     When checking that ‘it’ has the inferred type
7       it :: forall t. (Num t, Num [t]) => [t]
8 *Main> [1,2,3,4]++[1,2,3,4,5]
9 [1,2,3,4,1,2,3,4,5]

必须用 ++

而且++ 两边的类型要相同

 

列表比较是从大到小比较的,类似字符串

得到区间:*Main> [1..10]
               [1,2,3,4,5,6,7,8,9,10]

机智的是你可以列举第一项,第二项,最后一项得到区间

                     

 

不要运行这句:[1,3..]

                   我死机了。。。

如果非得用无限长度的列表可以用take 24 [1,3..] 取这个列表的前24项

 

 

列表推导式:

 

 元组:

使用元组来表示向量关系

序对:我觉得类似C++ 的pair

请记住HASKELL是惰性的

 

第一章完结,这篇博客主要计入自己开始入门Haskell的点滴。

写得不好,多多包涵

posted @ 2015-11-30 13:54  blankvoid  阅读(573)  评论(0)    收藏  举报