zoukankan      html  css  js  c++  java
  • 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]
  • 相关阅读:
    MyISAM和InnoDB的区别
    MySQL——索引与优化
    jquery选择器及效率问题
    Mac 可设置环境变量的位置、查看和添加PATH环境变量
    javascript默认中文(汉字/标点)长度均为1的解决
    苹果下抓屏截屏方法 包括全屏、选择区域、窗口抓屏等
    java实现window phone推送通知
    设计模式总结
    NHibernate 帮助类(单例实际运用)
    访问者模式
  • 原文地址:https://www.cnblogs.com/sleeper-qp/p/3242221.html
Copyright © 2011-2022 走看看