Re: [Functional programming]請問有 Haskell 同好嗎?
※ 引述《bigpig.bbs@bbs.csie.nctu.edu.tw (To littlepig with love)》之銘言:
> Functional programming ─ 用詩寫程式,編程怎麼可能這麼優雅,這麼一針見血,
> 這麼直截了當?
> 大家一起來學 Haskell 吧,看看下面這兩行,這樣就可以產生 Pascal 三角形哦!
幫你解說一下 :QQ
> pascal_tri :: [[Int]]
定義 pascal_tri 的型別為一個 List of List of Int
> pascal_tri = [1] : [ zipWith (+) ([0] ++ a) (a ++ [0]) | a <- pascal_tri ]
( 由於 Haskell 是 Lazy Evaluation, 所以定義 List 時可以
有遞迴到自己型別的效果, 反正是實際用到時它才會計算 )
pascal_tri 的內容是, 第一個值 List of 1, 後面的 :
表示後面的值的產生方式.
pascal_tri 後續的內容, 從前一個值取得下一個值的方式.
原 List 前面 加 [0], 後面加 [0], 再把其值依每個元素加起來
[1] 的話 zipWith (+) [0, 1] [1, 0] = [1, 1]
[1, 1] 的話 zipWith (+) [0, 1, 1] [1, 1, 0] = [1, 2, 1]
依此類推
> 以下是第 15 階的 Pascal 三角:
> pascal_tri !! 15
取出 pascal_tri List 的第 15 個值
> [1,15,105,455,1365,3003,5005,6435,6435,5005,3003,1365,455,105,15,1]
--
夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子
之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下
矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以
喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦將知止知止 61-220-34-34.HINET-IP.hinet.net海
→
09/24 13:54, , 1F
09/24 13:54, 1F
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章