望文生義
by thinker
最後更新時間: 2008-02-15 18:12:47 CST | 引用
查詢:
COMMENTS:
on 2008-02-18 13:28:05 CST
letoh said ..
以最後一個例子來看 list comprehension,的確會覺得跟 filter() 有重疊 我自己對 list comprehension 的理解是從無到有產生 list (例如產生一個亂數序列作為seed );而 map, filter 等函式則偏重對已存在的 list 進行某種操作。但因為板主的例子用了 `x in source' 這樣的語句,看起來像是操作一個已存在的 list,我會把它視為語法上的彈性,遇到這種情況我個人傾向以 filter 完成。 是不是要在一行寫完倒真的只是表象了 (板主用 ``表相'' 一詞似乎有不同意義?)
on 2008-03-05 11:52:33 CST
passerby said ..
comment...(C) 這看來比較是 syntax 定義的關係,在 haskell 裡常是 list comprehension 較易懂 上兩種寫法在 haskell 的對應如下 [x | x<-source, len(x)>0] filter (\x -> len(x)>0) source
on 2008-03-05 14:08:28 CST
Mr. Monkey said ..
其實 : output=[x for x in source if len(x)>0] 和 : 使 output 只留下 source 裡長度大於 0 部分 文字順序上幾乎一樣。
on 2008-03-10 16:31:54 CST
Thinker said ..
我想,理解度才是重點。就算和中文非常的接近,也有可能反而不易理解。必竟依然不是中文。至於易於理解與否,全看個人觀感,沒有一個標準。
on 2008-03-16 15:01:28 CST
Buganini said ..
幻想中的程式語言 function用{}來包住 afunc = {...} 這樣就定義了一個叫作afunc的function(by name) 如果不assign給別人的話就當lambda用啦XD arguments可以像perl那樣收list {..}(a,b) 假設這種語言把function也視為object的話 {...; self(a-1,b-1); ...;}(a,b) 這樣可以當作recursive lambda吧XD
on 2008-03-16 15:10:18 CST
Buganini said ..
之所以想要讓他像Perl一樣傳給function一個list(不太確定Perl裡面是不是叫list),是因為希望'()'不要要那麼多種意義:p 資料結構方面倒是比較喜歡PHP的array,把Perl/Python的array/list/hash/dictionary通通融合在一起,不過速度可能就慢很多了
on 2008-03-17 22:39:05 CST
Thinker said ..
Javascript 裡面的 anonymous function 其實很接近這樣的功能,只差 self() 。我和 Buganini 有相同的感受,也覺的需要一個類以 self() 的機制存在,這對 meta-programming 有很大的幫助。特別是 Javascript 或 Python 這類 script lanaguage ,能動態組成程式,參照 function 本身,能帶來很大的方便。