2015-03-18 26 views
1

在我看來,將DCGs(定義語句語法)定義爲是一種簡潔的方式來描述Prolog中的列表,對於定義它們是一種很差的方式。據我所知,DCGs不僅用於Prolog,還用於其他編程語言,如Mercury。
此外,它們被稱爲DCG,因爲它們表示邏輯程序設計基礎的一組明確子句(Horn子句)中的語法。 那麼,爲什麼如果一個完整的Prolog程序可以使用明確的子句來編寫,那麼爲什麼要將DCG定義爲這種緊湊的方式來描述Prolog中的列表?爲什麼將DCG定義爲描述列表的緊湊方式?

注:疑問來自SO給出的標籤的描述。

+1

我相信你在SO的「定義」中注入了單獨的形容詞* *。 ;)所以,關於DCG的說法是真的(對@mat而言),但這不是我稱之爲DCG完整目的的描述。 – lurker 2015-03-19 13:16:32

+0

準確@lurker,這是我的觀點。 「純粹」我的意思是說這只是CDG的一個好處,我想我沒有把對,我的壞:) – Yasel 2015-03-19 15:33:58

+0

沒問題。 *僅*意味着它是*唯一的好處*,而不是*只有一個*,但僅僅是技術性。我認爲這確實會造成一個有趣的問題。 :) – lurker 2015-03-19 15:35:13

回答

2

從DCG標籤的wiki extended info提供額外的信息,我認爲這是既與第一點正確,也非常一致:

「DCG中通常與Prolog的關聯,但類似的語言, 因爲水星也包括DCGs。「

關於你的第二點:強調與Prolog列表的密切關聯在我看來是很有道理的,因爲DCG確實總是描述一個列表,並且通常也非常緊湊。

相關問題