我是一位開始學習語言的Common Lisp新手。我的問題是:我已經看到幾個函數以不同的方式使用謂詞語法。例如(只是看這個),有streamp和pathnamep,但也有input-stream-p和output-stream-p。爲什麼不是所有的函數都使用* p或* -p標準化?這可能只是一個歷史神器嗎?爲什麼謂詞命名約定在不同函數之間有所不同?
回答
的規則是一個字謂詞名以剛P
,而多字謂詞的名字在-P
結束。前者的原因大多是歷史的;後者的原因是像input-streamp
這樣的名稱會錯誤地暗示被問到的問題是「這個輸入流是什麼?」或類似的東西。
我傾向於說'predicatep'和'complex-predicate-p'(或者,或者'simplep'和'complex-predicate-p')。 – Vatine 2013-03-27 14:25:39
還要注意,在某些情況下,不要爲多詞謂詞添加連字符(例如'string-lessp')。參見[Common Lisp the Language,2nd Edition](http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node69.html)。 – coredump 2013-12-07 15:48:45
還有'atom' :)。[Common Lisp the Language,2nd Edition](http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node73.html) – 2017-10-31 21:06:28
- 1. 爲什麼mapply()的行爲有所不同,取決於所謂的函數?
- 2. 爲什麼命名不同?
- 3. 爲什麼谷歌雲中不同的包或命名約定?
- 4. 爲什麼XML ID名稱約定與Java的約定不同?
- 5. 爲什麼DateTime.Now.Date格式在不同系統之間有所不同?
- 6. 爲什麼UnitCount在PackageInfoTable和TPackageTypeInfo之間有所不同?
- 7. Autolayout:爲什麼這些相同的約束有所不同?
- 8. 爲什麼CakePHP使用不同的複數/單數命名約定?
- 9. PHPUnit和不同的類命名約定
- 10. c#爲具有相同數據但不同類型的變量命名約定
- 11. 爲什麼不同的謂詞接口n JAVA 8?
- 12. 命名謂詞函數的最佳方式是什麼?
- 13. 這些函數之間有什麼不同?
- 14. USE |之間有什麼不同? select_db函數還是TABLENAME.dbo?
- 15. Matlab中不同高斯函數之間有什麼區別?
- 16. TaskStackBuilder.addParentStack()和TaskStackBuilder.addNextIntent()之間有什麼不同?
- 17. app.params()和router.params()之間有什麼不同?
- 18. ConfigurationManager.GetSection和Configuration.GetSection之間有什麼不同?
- 19. ComboViewer和Combo之間有什麼不同?
- 20. 「TextClock」和「DigitalClock」之間有什麼不同?
- 21. JConnection和JDBC之間有什麼不同?
- 22. *&aPtr和&* aPtr之間有什麼不同?
- 23. InternalResourceViewResolver和UrlBasedViewResolver之間有什麼不同
- 24. paintcomponent()和paintcomponents()之間有什麼不同?
- 25. GIS和GPS之間有什麼不同?
- 26. WAS和IIS之間有什麼不同?
- 27. 不同命名空間中的相同函數名稱
- 28. 在不同所有者之間添加外鍵約束
- 29. 合同名稱與命名空間名稱相同,有什麼大不了的?
- 30. 爲什麼HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath在不同的服務器上有所不同?
大部分歷史 - Common Lisp主要是作爲當時每個主要Lisp實現的一切簡單聯合而結束的,幾乎所有內容都引入了更多的興趣,以確保現有代碼將繼續發揮作用,而不是創建一種語言很好地融合在一起。 – 2013-03-26 15:30:35
這實際上不是'語法' - 它是'命名約定' – GoZoner 2013-03-26 20:45:52
@GoZoner好點,固定的。 – 2013-03-26 21:12:39