haskell学习笔记<1>--基本语法

七月记录:整个七月就在玩,参加夏令营,去遨游。。。。 八月份需要开始复习,正等书的这个过程突然想起一直没有完成的学习-haskell,所以当前的目标是用haskell制作一个局域网通信的小工具,要求:一,完成工具要求  二,完备的设计文档   三,报告

学习资料:http://fleurer-lee.com/lyah/chapters.htm  haskell趣学指南 (后续还会有别的书,rwh等)

基本语法:

类型:

常见基本类型:   Int:一般是32bit整数

      Integer:无限大整数

      Float:单浮点

      Double:双浮点

      Bool:布尔型

      Char:字符型

常见类型类:

    Eq:可判断性类型 例如Int等

    Ord:可判断大小型 

    Show:可用字符串表示的类型

    Read:将一个字符串转为Read的类型  单用需类型注释 如read “5” :: Int

    Num:表示数字的类型类

    Integral:同样是表示数字的类型类。Num包含所有的数字:实数和整数。而Intgral仅包含整数,其中的成员类型有Int和Integer。

    Floating:仅包含浮点类型:Float和Double。

List and Tuple:

  List:多维链表  Tuple:元组

  List:类型相同,不定长

  Tuple:类型可以不相同,但是单元数据数目一定

语法:

   if-else语句 格式: if 表达式

            then  表达式

            else   表达式

       if-else语句本身也是一个表达式,这里体现出函数式语言的一个特点:一切皆数

    模式匹配:模式匹配通过检查数据的特定结构来检查其是否匹配,并按模式从中取得数据。

          注意:记得一定通配语句

      where绑定:where绑定中定义的名字只对本函数可见,可用模式匹配,函数等

      let in表达式:   格式:let [bindings] in [expressions]    

        let绑定本身是个表达式,而where绑定则是个语法结构

      case :

          格式:
         case
 expression of  pattern -> result   
                             pattern -> result   
                             pattern -> result   
                             ...  

        用途 1:if-else或者case等 

    

lucky :: (Integral a) => a -> String
lucky 7 = "Lucky Number seven!"
lucky x ="Sorry,you're out of luck,pal!"

      用途 2:递归

         

--quicksort
quickSort :: (Ord a) => [a] -> [a]
quickSort [] = []
quickSort [x] = [x]
quickSort (x:xs) = (quickSort small) ++ [x] ++ (quickSort big)
            where    
                small = [y | y<-xs,y<=x]
                big =   [y | y<-xs,y>x]
原文地址:https://www.cnblogs.com/sleeper-qp/p/3242221.html