回答這個question,我意識到Haskell
允許你在聲明函數時解構對象,並用它來做並行函數定義。並行聲明函數是一個好主意嗎?
基本上,讓我們想象一下,我想這樣做
a = (1+)
b = (2+)
c = (3+)
d = (4+)
e = (5+)
什麼是寫它的DRYest方式?我的意思是,畢竟模式是相同的:功能的名稱不能被猜測,也不能添加數量,但我應該能夠避免每次寫入+
(當然,沒有使用模板哈斯克爾)。
基本上,我想能夠使用map
或類似的東西,看起來map
只是工作!
[a,b,c,d,e] = map (+) [1..5]
等瞧!
這短得多,也許更有表現力,以及它的工作原理:
> a 10
11
> b 10
12
etc ...
所以我的問題是,它是一個很好的模式來使用(在那種情況下),如果不是,這是平局(我知道購買經驗相當於紅寶石是一場噩夢,但其原因似乎並不適用於Haskell)?
更新
我理解這些代碼的可讀性是主觀的,可以作爲基於意見中可以看出。但是,不這樣做可能有一些客觀的原因。例如,在Ruby(至少1.8)中,使用define_method
定義的方法對大多數IDE和標籤構建器都是不可見的。而且,你不能使用調試器等進入它們,這使得它們在實踐中非常不方便。我在詢問類似的原因哈斯克爾
這個問題吸引了「主要基於觀點的」近距離投票 - 雖然我認爲這個問題存在一定程度的主觀性,但它仍然有合理客觀的答案,應該保持開放。 –