亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 6305 | 回復(fù): 9
打印 上一主題 下一主題

haskell 如何實(shí)現(xiàn) list 中元素出現(xiàn)次數(shù)的統(tǒng)計(jì)呢?[已解決] [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-05-07 17:04 |只看該作者 |倒序?yàn)g覽
對于一個(gè) list, 如何統(tǒng)計(jì)它其中每個(gè)元素都出現(xiàn)了多少次呢?

即這樣的一個(gè)函數(shù):

wordCount :: [a] -> [(a, Int)] 如何來實(shí)現(xiàn)呢?

謝謝各位了先。

-----------
group 是個(gè)好東東。

[ 本帖最后由 drunkedcat 于 2009-5-15 18:29 編輯 ]

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2009-05-07 18:17 |只看該作者
寫一個(gè)

Prelude List> x
[1,1,2,1,3,2,1,2,2,3,4,2]

Prelude List> [(head x, length x)| x<- group $ sort x]
[(1,4),(2,5),(3,2),(4,1)]

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2009-05-11 13:33 |只看該作者
Mathematica


  1. L={1,1,2,1,3,2,1,2,2,3,4,2}
  2. {#[[1]], # // Length} & /@ (L // Sort // Split)

  3. {{1, 4}, {2, 5}, {3, 2}, {4, 1}}
復(fù)制代碼

論壇徽章:
95
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀(jì)念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農(nóng)
日期:2015-10-19 19:43:35程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
4 [報(bào)告]
發(fā)表于 2009-05-11 14:20 |只看該作者
原帖由 win_hate 于 2009-5-11 13:33 發(fā)表
Mathematica


稍稍解釋下 mathematica 的語法撒,根本就看不懂,也猜不出來。。。

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2009-05-11 14:42 |只看該作者
mathematica  的函數(shù)用 [] 而不是 (),所以我們習(xí)慣的 f (x) 要寫成 f[x]

由于 [] 被函數(shù)用掉了,所以列表用 {}, 若 L 是列表,則 L[[n]] 取第 n 個(gè)元素。

前綴 f[x]
后綴 x//f
二元函數(shù),中綴 x~f~y

/@ 是 Map 的簡寫,也可以用 Map,

Split 類似 Haskell, List 模塊中 的 group

lambda 表達(dá)式在 Mathematica 中稱為純函數(shù),可以用 Function 來構(gòu)建。比如 \x y->x+y 可以表示為

Function[{x,y}, x+y]

也可以簡寫為 #1+#2 &,后面要有個(gè) &,于是  #1+#2 & [1,2] 得到 3。

{#[[1]], # // Length} & /@ (L // Sort // Split)

分為 3 部分

  • (L//Sort//Split) 后綴使用 Sort 和 Split
  • {#[[1]], # // Length} &
    lambda 表達(dá)式 \x -> (head x, legth x)
  • /@ 是 Map


思路跟 2 樓的 Haskell 代碼是一樣的。

論壇徽章:
95
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀(jì)念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農(nóng)
日期:2015-10-19 19:43:35程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
6 [報(bào)告]
發(fā)表于 2009-05-11 15:28 |只看該作者
原帖由 win_hate 于 2009-5-11 14:42 發(fā)表
lambda 表達(dá)式在 Mathematica 中稱為純函數(shù),可以用 Function 來構(gòu)建。比如 \x y->x+y 可以表示為

這個(gè)在 Haskell 中是叫作 lambda abstraction,和在 lambda calculus 中一樣。

思路跟 2 樓的 Haskell 代碼是一樣的。

嗯,不過 Mathematica 的語法實(shí)在是太瘋狂了。。。

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2009-05-12 21:18 |只看該作者
這個(gè)簡直跟天書一樣啊,還能叫語言么

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2009-05-12 23:47 |只看該作者
換個(gè)寫法,短一些。

{#[[1]], Length@#} & /@ Split@Sort@L


Mahtematica 在認(rèn)祖追宗時(shí)說受了 APL 的影響,APL 的冗余度是低了點(diǎn)。

不過也沒樓上兩位說得那么夸張吧?用過 perl 和 shell 的人還能怕這個(gè)?


======================================

加個(gè)清晰版:

f = Function[{x}, {Part[x, 1], Length[x]}]
Map[f, Split[Sort[L]]]

[ 本帖最后由 win_hate 于 2009-5-12 23:55 編輯 ]

論壇徽章:
95
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀(jì)念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農(nóng)
日期:2015-10-19 19:43:35程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
9 [報(bào)告]
發(fā)表于 2009-05-13 08:15 |只看該作者
原帖由 win_hate 于 2009-5-12 23:47 發(fā)表
換個(gè)寫法,短一些。

{#[[1]], Length@#} & /@ Split@Sort@L


Mahtematica 在認(rèn)祖追宗時(shí)說受了 APL 的影響,APL 的冗余度是低了點(diǎn)。

若說是跟 APL 學(xué)的,這我倒信

BTW,APL 的冗余度不是低,那簡直是太低了。

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2009-05-15 18:28 |只看該作者
呵,還是看著 haskell 的語法簡單些,可能是習(xí)慣了吧。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP