• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            算法學(xué)社
            記錄難忘的征途
            posts - 141,comments - 220,trackbacks - 0

            Haskell's Type System

                Haskell的數(shù)據(jù)類型有三個(gè)特點(diǎn):
                1. 強(qiáng)類型
                2. 靜態(tài)類型
                3. 可自動(dòng)推斷
                額,我按照自己的理解解釋一下吧...
                強(qiáng)類型不支持自動(dòng)類型轉(zhuǎn)換,為了讓代碼可靠一些...
                靜態(tài)類型是每個(gè)表達(dá)式或者變量的類型都是靜態(tài)不變的...
                Haskell可以自動(dòng)檢測(cè)表達(dá)式中常數(shù)的數(shù)據(jù)類型...

            common basic types

               char: Unicode字符
               bool:True & False
               Int : 在32位機(jī)器上是32位,在64位機(jī)器上是64位
               Integer: 高精度整形
               Double:64位浮點(diǎn)型

            Function Application

            一些函數(shù)需要注意的地方,就是如果你要把一個(gè)函數(shù)的值傳到另一個(gè)函數(shù)里,需要加一個(gè)括號(hào)以改變優(yōu)先級(jí)
             1 ghci>odd 3
             2 True
             3 ghci>even 6
             4 True
             5 ghci>compare (sqrt 2) 1
             6 GT
             7 ghci>compare (sqrt 2) 1 == GT
             8 True
             9 ghci>compare sqrt 2 1 == GT
            10 
            11 <interactive>:16:1:
            12     The function `compare' is applied to three arguments,
            13     but its type `a0 -> a0 -> Ordering' has only two
            14     In the first argument of `(==)', namely `compare sqrt 2 1'
            15     In the expression: compare sqrt 2 1 == GT
            16     In an equation for `it': it = compare sqrt 2 1 == GT

            Composite Data Types: Lists and Tuples

            字符串就是一個(gè)字符列表,head 函數(shù)可以返回列表的第一個(gè)元素,tail可以返回列表的除了第一個(gè)元素的所有元素。
            1 ghci>head "figo"
            2 'f'
            3 ghci>tail "figo"
            4 "igo"
            5 ghci>tail [1,2,3]
            6 [2,3]

            還有另一種類型叫做“元組”。類似于C++的pair,連用法都極其相似。

            ghci>snd (19910905,"hanfei")
            "hanfei"
            ghci>fst (19910905,"hanfei")
            19910905

            Function Types and Purity

            :type 命令可以查看一個(gè)函數(shù)傳入的參數(shù)類型和返回的參數(shù)類型
            Haskell的函數(shù)只允許調(diào)用傳入的參數(shù),禁止使用全局變量。 這樣的函數(shù)叫做“純函數(shù)”。(略感坑爹)
            1 ghci>:type lines
            2 lines :: String -> [String]
            3 ghci>lines "figo\nis\nstupid\nhahaha"
            4 ["figo","is","stupid","hahaha"]

            Haskell Soucre Files, and Writing Simple Functions

            Haskell源文件的后綴是.hs,這樣的話vim就會(huì)有語(yǔ)法高亮了...
            定義一個(gè)函數(shù)
            1 -- add.hs by figo 05.16.2012
            2 add a b = a + b
            我們可以用:load add.hs來(lái)加載這個(gè)函數(shù)
            1 ghci>:load add.hs
            2 [1 of 1] Compiling Main             ( add.hs, interpreted )
            3 Ok, modules loaded: Main.
            4 ghci>:type add
            5 add :: Num a => a -> a -> a
            6 ghci>add 1 2
            7 3

            Conditional Evaluation

            利用if來(lái)寫一個(gè)drop函數(shù):
            1 -- myDrop.hs by figo 05.16.2012
            2 myDrop n xs = if n <= 0 || null xs
            3             then xs
            4             else myDrop (n-1)(tail xs)
            里面的類型都是自動(dòng)檢測(cè)的... 額... 不用像C++那樣提前聲明
            測(cè)試一下剛寫的東東
            1 ghci>:load myDrop.hs 
            2 [1 of 1] Compiling Main             ( myDrop.hs, interpreted )
            3 Ok, modules loaded: Main.
            4 ghci>myDrop 2 "figo"
            5 "go"
            6 ghci>myDrop 1 ["hanfei","figo","hello"]
            7 ["figo","hello"]

            Polymorphism in Haskell

            Haskell的多態(tài)性指的是,如果一個(gè)函數(shù)可以把某參數(shù)當(dāng)做任意類型處理。就像C++的template一樣。
            ghci>:type fst
            fst :: (a, b) -> a

            Exercises


            寫一個(gè)函數(shù),功能是返回元素的倒數(shù)第二個(gè)值。
            呃... 只能寫成這樣子了... 好渣... 求大神指點(diǎn)
            1 -- lastButOne.hs by figo 05.16.2012
            2 lastButOne xs = if(length (xs) <= 2)
            3                 then head xs
            4                 else lastButOne (tail xs)
            5 
            posted on 2012-05-16 19:59 西月弦 閱讀(1641) 評(píng)論(3)  編輯 收藏 引用 所屬分類: 讀書筆記(Haskell)

            FeedBack:
            # re: Real World Haskell 讀書筆記(二) Types and Functions
            2012-05-16 23:45 | OwnWaterloo
            lastButOne xs = case xs of { [] -> Nothing ; y:[] -> Nothing ; x:y:[] -> Just x ; x:xs -> lastButOne xs}

            或者:
            lastButOne [] = Nothing
            lastButOne y:[] = Nothing
            lastButOne x:y:[] = Just x
            lastButOne x:xs = lastButOne xs


            《real world haskell》不怎么講語(yǔ)言的……  回復(fù)  更多評(píng)論
              
            # re: Real World Haskell 讀書筆記(二) Types and Functions
            2012-05-17 21:39 | 西月弦
            @OwnWaterloo
            多謝指教... 有沒(méi)有什么比較好關(guān)于Haskell或者函數(shù)式編程的書籍推薦一下?
            我是超級(jí)新手阿....  回復(fù)  更多評(píng)論
              
            # re: Real World Haskell 讀書筆記(二) Types and Functions
            2012-05-19 11:31 | OwnWaterloo
            @西月弦
            Haskell我也是新手,感覺(jué)收獲最大的是 http://learnyouahaskell.com/
            其次是 http://www.haskell.org/tutorial/ 內(nèi)容不多,但信息量很大……
            real world haskell對(duì)語(yǔ)言的介紹根本不夠看懂它里面提供的代碼……

            函數(shù)式編程沒(méi)專門看過(guò)什么數(shù)據(jù)……

            PS:cppblog的通知郵件被gmail當(dāng)作垃圾了……
              回復(fù)  更多評(píng)論
              
            国产精品VIDEOSSEX久久发布 | 一本久久综合亚洲鲁鲁五月天| 狠狠色丁香婷婷综合久久来| 狠狠88综合久久久久综合网 | 男女久久久国产一区二区三区| 久久久久亚洲av无码专区喷水| 久久美女人爽女人爽| 久久噜噜久久久精品66| 色综合久久无码五十路人妻| 久久成人精品视频| 热99RE久久精品这里都是精品免费| 亚洲午夜久久久久久久久电影网| 久久夜色精品国产亚洲| 久久妇女高潮几次MBA| 国产精品成人无码久久久久久 | 亚洲成人精品久久| 人妻无码αv中文字幕久久琪琪布 人妻无码精品久久亚瑟影视 | 精品999久久久久久中文字幕| 国产巨作麻豆欧美亚洲综合久久| 一本色道久久88—综合亚洲精品| 国产福利电影一区二区三区久久久久成人精品综合 | 亚洲AV日韩AV天堂久久| 久久毛片免费看一区二区三区| 亚洲午夜久久久久久噜噜噜| 性欧美大战久久久久久久| 久久国产精品久久| 国产亚洲精品久久久久秋霞 | 国产精品美女久久久久网| 亚洲AⅤ优女AV综合久久久| AV无码久久久久不卡网站下载| 伊人久久大香线蕉AV色婷婷色| 欧美大战日韩91综合一区婷婷久久青草 | 麻豆成人久久精品二区三区免费 | 久久亚洲国产午夜精品理论片| 久久精品一本到99热免费| 噜噜噜色噜噜噜久久| 久久久久九九精品影院| 久久国产福利免费| 欧美与黑人午夜性猛交久久久| 久久国产精品免费| 欧美午夜精品久久久久久浪潮|