2

this article,筆者斷言:模板元編程:基元遞歸?

...程序確實顯示模板實例化機制是可以在編譯時完成重要的計算原始遞歸語言。

我發現這很有趣,因爲我幫助教授計算理論中的一門課,該課深入了原始遞歸函數的理論。然而,我的印象是模板元編程是圖靈完備的,這是一個嚴格的強烈的說法,而不是說它是原始的遞歸......畢竟,創建一個模板元程序並不是很難,它不會停止。

我錯過了什麼嗎?模板元語言是一種嚴格的原始遞歸語言,還是我相信它涵蓋了更廣泛的程序?

+0

感謝編輯科迪......我會盡力讓下一次更乾淨:) – 2011-12-22 06:52:37

+0

雖然是原始遞歸,但C++的模板元編程也與圖靈等價。 – Gabe 2011-12-22 06:53:46

+0

如果我錯了,請糾正我,但我相信說一種語言是「原始遞歸」意味着您可以編程一個非常特定的功能類(即那些不使用無限循環的功能類)。原始遞歸語言保證任何寫在它們中的程序都會停下來......當然,一個圖靈等價語言也可以運行一個原始的遞歸函數,但那不是重點。 – 2011-12-22 06:56:50

回答

3

我相信你只是讀了太多的文字,而「原始」並不意味着「原始遞歸」,而是它是一種「遞歸語言」(聽起來很古怪,我稱之爲描述爲一種功能語言,但從不介意),這是原始的。

如果將TMP看作是一種功能性語言,它不是一個非常複雜的語言;因此,這是一個原始的。

但是你是對的,TMP肯定是圖靈完備的。

我懷疑很多人聽說過原始遞歸語言,所以這只是一個不幸的選擇。

+0

啊,我明白了......不知怎的,我甚至都沒有想到:)非常感謝! – 2011-12-22 07:23:34

1

Unruh的程序只展示了原始遞歸,也就是循環(當發生這種情況時,我確實存在!)。然而,立即認識到完全遞歸得到了支持(因爲實際上的確沒有進行tail rec優化)。

+0

啊,我明白了。非常感謝;那一定是看到的東西! – 2011-12-30 01:46:53

+0

是的,這種興奮在ISO委員會會議上很少見:) – Yttrill 2012-01-02 05:39:36