有個關於鋼琴家的故事是這樣子: 某樂譜裡最華麗的樂章,需要人類極限的超快指法才能彈奏。有位鋼琴家在他年老時,發現自己的體力衰退了,手指無法彈出超高速,不由得為了無法演奏這段華麗的樂章而困擾不已。所幸,不久之後,這位鋼琴家找到了很聰明的解決方案: 「透過人耳的相對節奏感來解決問題。」由於人類的耳朵對於音樂的節奏是相對的感受,所以這位鋼琴家在演奏到接近最華麗的樂章前,就先把音樂節奏的速度放慢 1/8 ,等到演奏到最華麗的樂章時,再發揮自己的最高速來彈奏。對於聽眾來說,由於之前聽到音樂的是略慢的,於是會感到強烈的反差,覺得華麗的樂章極快。甚至聽眾還會覺得,音樂家到老年時, 彈奏的技巧更高超了,最華麗的那一段樂章還比他年輕時彈得更快。我今年 37 歲,在軟體業來講,已經算是大齡的軟體工程師。體力、腦力也不如現在二十多歲的年輕人。函數式編程,對於我來講,就像是上頭故事中鋼琴家的犯規技巧,讓我可以比十年前產出更多、更正確。那什麼是函數式編程呢? 光是這個定義,就有很多不一致的看法,不一致的看法部分,已經超出本文的篇幅。在本文裡,我想探討一個問題: 「函數式編程,是如何