2005 年我問過 Thinker 這樣的問題:想程式常碰到要印出清單的情況,對人類而言習慣的格式是:
1 | 1, 2, 3, 4 |
但這個格式對於 C 語言來說卻不太好處理。一般可以寫成這樣:
1 | <<一般作法>>= |
但是 printf 這行會重複,似乎不是最好的寫法。如果不要重複,那就得在迴圈中加個判斷式,但每次都要多個判斷又好像有點浪費:
1 | <<判斷作法>>= |
當時 Thinker 想了想,給了我一個用 function pointer 的答案:
1 | void dummy() { |
話說,事隔多年,今天在看其他東西的時候,突然想到這個問題可以用 Clifford’s Device 的方法做。
1 | <<Clifford>>= |
各位看官,可有什麼新想法嗎?
1 | <<list.c>>= |
當然啦,如果是 python,這問題可簡單了:
1 | 'one', 'two', 'three'] l = [ |
另,本文採用 Noweb 格式,用工具跑一遍就可以產生 list.c 。