望文生義
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 本身,能帶來很大的方便。