第一章:基本語法和GHCi

夢飛發表於2017-02-23

1.程式碼註釋

  • --單行註釋
  • {-

    一段註釋

    -}

2.表示式:有值(value)的式子,例如: 1, x+3, True, sort [2,4,6,1]

3.宣告:一個完整的Haskell程式由若干宣告組成

  • 型別宣告:Haslell是一門強型別語言,所有表示式均有確定的型別

  • 繫結宣告:Haskell中不存在變數,只存在繫結,任何時刻一個名稱對應的表達都是唯一確定的

  • 模組宣告:模組化可以簡化程式碼的構成

  • 匯入宣告:匯入使用已經建立的模組

    module Main where       --定義了一個模組Main
    import Data.List        --匯入模組Data.List
    
    
    Welcom :: String        -- 讀作 Welcom的型別是String
    welcom = "hello world"   -- 繫結welcom的值為 "hello world" 
    main = print (nub welcom)   --main函式使用Data.List 中的函式nub去除welcom中的重複字母
    

4.函式:在Haskell中,函式是最重要,最基本的元素

  • 普通函式:呼叫即函式跟上引數

  • 中綴函式:先寫地一個引數,再寫函式,最後跟上第二個引數,與加減乘除類似

    print "hello world"    - -普通函式呼叫
    2 + 3        - -中綴函式呼叫
    (+) 2 3      - -普通函式呼叫
    zs = sort xs ++ sort ys     --連線兩個排序後的列表
    
  • 普通函式優先順序最高,高於任何中綴函式

  • 中綴函式(中綴運算子)的優先順序從0到9.和結合性一起定義,使用不結合infix,左結合infixl和右結合infixr

    infixl 6 +       --加減+的優先順序是6,左結合
    infixl 7 *       --乘除*的優先順序是7,左結合
    infixl 8 ^       --乘冪^的優先順序是8,左結合
    infix 4 `elem`   --`elem`的優先順序是4,不能結合
    
  • 型別說明符::的優先順序最低

  • 一些命名規則

5.GHCi:互動命令模式

  • :? :h : hellp 檢視所以命令的幫助
  • :q :quit 推出ghci
  • :l :load 載入*.hs檔案到當前會話
  • :t :type 顯示錶達式的型別
  • :i :info 顯示繫結的詳細資訊

6.一些初級函式: id, const, not, (&&), length, take, reverse, elem, (==), min, tail, head 等等