看板Programming
标 题Re: [Functional programming]请问有 Haskell 同好吗?
发信站无名小站 (Thu Sep 7 11:33:08 2006)
转信站ptt!ctu-reader!Spring!news.nctu!news.ntu!news.ee.ttu!netnews.csie.nctu
※ 引述《[email protected] (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海
1F:→ bamboo82:感谢解说 122.147.13.154 09/24 13:54