關於函數編程(二)摺疊與抽象化
三個函數都同樣地把串列從左至右走訪一遍,差別僅在碰到串列結尾時分別傳回不同的值,並用不同的運算元處理遞迴呼叫的結果。我們能不能讓這三個函數共用同一個定義呢?
三個函數都同樣地把串列從左至右走訪一遍,差別僅在碰到串列結尾時分別傳回不同的值,並用不同的運算元處理遞迴呼叫的結果。我們能不能讓這三個函數共用同一個定義呢?
「幾年前我便觀察到,一個程式員的品質是其程式中 go to
密度的遞減函數。」他說,「後來我發現了為什麼 go to
的使用有這麼嚴重的後果,並相信所有『高階』語言都應該把 go to
廢除掉。」
由指令語言的觀點看函數語言,注意到的第一件事情是「函數語言裡面不可以改變數的值」。於是大家難免覺得奇怪,這怎麼會是個優點呢?自廢武功去掉一個功能,會有什麼好處呢?
依先寬度的順序把樹的節點一個個標起來。