คำถามติดแท็ก functions

ใช้แท็กนี้สำหรับ Elisp "ฟังก์ชัน" สำหรับการใช้งานคำจำกัดความการนิยามใหม่การกำหนดนามแฝงและคุณสมบัติมาตรฐานอื่น ๆ ของการดำเนินการฟังก์ชันพื้นฐานของภาษาโปรแกรม Lisp เพิ่มแท็ก Elisp เพิ่มเติมเมื่อฟังก์ชันเกี่ยวกับคุณลักษณะ Emacs เฉพาะ

1
ความแตกต่างระหว่างฟังก์ชั่นและคำสั่งคืออะไร?
เมื่อโพสต์คำถามและคำตอบที่นี่บางครั้งผู้คนก็ใช้คำว่า "ฟังก์ชั่น" และ "คำสั่ง" แทนกันได้ ในกรณีอื่น ๆ ผู้คนใช้เพียงหนึ่งในสองคำเพื่อหารือเกี่ยวกับรหัสเฉพาะ เนื่องจากโพสต์มักจะเน้นที่หัวข้ออื่นพวกเขาไม่ได้อธิบายว่าทำไมพวกเขาจึงใช้ศัพท์หนึ่ง แต่ไม่ใช่อีกหัวข้อหนึ่ง ดังนั้น: ถาม:ใน Emacs Lisp ความแตกต่างระหว่างฟังก์ชั่นและคำสั่งคืออะไร?

4
เมื่อใดที่จะอ้างคำแลมบ์ดาที่คมชัด?
ถาม:เมื่อใดถ้าเคยจะมีประโยชน์กับการเสนอราคาที่คมชัดlambdaและถ้าเป็นไปไม่ได้เราจะไม่เสนอราคาที่คมชัดเมื่อlambdaใด คนใช้lambdas ในสามวิธี: ธรรมดา: (lambda (x) x) ที่ยกมา: '(lambda (x) x) คมชัดที่ยกมา: #'(lambda (x) x) เธรด SO นี้กล่าวถึงสามประเภทเธรด SO นี้อธิบายถึงสาเหตุที่ไม่อ้างถึง (NB: not -quote quote ) lambdas และเธรด SOนี้ยังกล่าวถึงความแตกต่างระหว่างการอ้างถึงและการอ้างอิงที่คมชัด ตอนนี้โหนดแบบแมนนวลในฟังก์ชั่นที่ไม่ระบุชื่อและ docstring เพื่อlambdaทราบว่าlambdaเป็นข้อความที่อ้างถึง: การเรียกแบบฟอร์ม(lambda ARGS DOCSTRING INTERACTIVE BODY)เป็นการอ้างตนเอง ผลของการประเมินแลมบ์ดาแสดงออกคือการแสดงออกของตัวเอง แลมบ์ดานิพจน์นั้นอาจถูกมองว่าเป็นฟังก์ชัน ... ดังนั้นจึงปรากฏว่า(lambda (x) x)และ#'(lambda (x) x)เทียบเท่า แต่'(lambda (x) x)ไม่ใช่ (ที่สำคัญที่สุดคือเมื่อรวบรวมไบต์) ดูเหมือนว่าจะไม่ค่อยต้องการอ้างถึงlambdaแต่ก็ไม่ชัดเจนสำหรับฉันเมื่อใดก็ตามที่เราควรหรือไม่ควรจะพูดคมชัด: การอ้างความคมชัดเป็นlambdaเพียงตัวเลือกโวหารหรือมีสถานการณ์ที่การอ้างอิงที่คมชัดนั้นมีประโยชน์จริงหรือไม่? …
30 elisp  functions 

2
ฟังก์ชั่นสามารถเข้าถึงชื่อของพวกเขา?
ใน C มีตัวแปรเวทย์มนตร์__func__ที่เก็บชื่อฟังก์ชั่นปัจจุบัน ใน Bash มีอาร์เรย์ที่FUNCNAMEถือชื่อของฟังก์ชั่นทั้งหมดในสแตกการโทร !!! มีสิ่งที่คล้ายกันใน Emacs Lisp หรือไม่? หรือวิธีง่ายๆสำหรับฟังก์ชั่นในการเข้าถึงชื่อหรือไม่? ฉันไม่พบคำตอบในคู่มือ Emacs Lisp (บทที่ 12 เกี่ยวกับฟังก์ชั่นหรือดัชนีของตัวแปรและฟังก์ชั่นและ .. )
25 elisp  functions 

1
อะไรคือความแตกต่างระหว่าง 'และ #' ที่ด้านหน้าของสัญลักษณ์?
ฉันใหม่สำหรับ Emacs นิดหน่อย เมื่อดูการกำหนดค่าบางอย่างฉันพบว่ามีคำสั่งสองประเภทใน "add-hook" (add-hook 'LaTeX-mode-hook #'LaTeX-math-mode) และ (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode) สิ่งนี้ทำให้ฉันสับสนเป็นเวลานานและฉันไม่รู้วิธีค้นหา "#" "ใน google ... ขอบคุณ
22 elisp  hooks  functions  quote 


2
ความแตกต่างระหว่างโหลดไฟล์และโหลด
ฉันอ่านเอกสารของทั้งสองฟังก์ชั่น แต่พวกเขาดูเหมือนจะไม่ได้เปิดเผยข้อมูลมากนัก อะไรคือความแตกต่างที่แท้จริงระหว่างพวกเขานอกเหนือจากความจริงที่ว่าloadมีฟังก์ชั่นในตัวในซอร์สโค้ด C ในขณะที่โหลดไฟล์เป็นฟังก์ชั่นคอมไพล์รายการแบบโต้ตอบ ฟังก์ชั่นที่แนะนำให้ใช้init.elเนื่องจากทั้งสองดูเหมือนจะทำงานเดียวกันคืออะไร?
17 elisp  functions 

1
เหตุใดฉันไม่ผูกฟังก์ชันของฉันกับคีย์หรือเรียกมันด้วย Mx
ฉันเขียนฟังก์ชั่นและฉันต้องการเรียกมันผ่าน Mx และผูกมันไว้กับกุญแจ นี่คือฟังก์ชั่นของฉัน: (defun my-function () (message "This is a great function")) ถ้าฉันพยายามโทรด้วยM-x my-functionฉันได้รับข้อผิดพลาด: [no match]ใน mini-buffer ถ้าฉันพยายามผูกมันไว้กับกุญแจ (หรือคลิกเมาส์): (global-set-key (kbd "C-c a") 'my-function) ดูเหมือนว่าจะใช้งานได้ แต่เมื่อฉันพยายามโทรด้วยC-c aฉันได้รับข้อผิดพลาด อาร์กิวเมนต์ประเภทไม่ถูกต้อง: commandp, my-function ทำไมฉันถึงใช้ฟังก์ชั่นไม่ได้?


1
จะทราบได้อย่างไรว่าฟังก์ชันใดถูกเรียกใช้จาก (backtrace / stacktrace)
ฉันพบปัญหาว่าภูมิภาคปิดใช้งาน (ในโหมดเครื่องหมายชั่วคราว) deactivate-markมีการเรียกใช้ฟังก์ชั่นและฉันต้องการทราบว่าถูกเรียกใช้จากที่ไหน (และทำไม) ฉันพยายามM-x debug-on-entry RET deactivate-markแล้วก็หยุด แต่ฉันไม่พบวิธีการโทรหา stacktrace ที่แสดงทั้งหมดคือ: Debugger entered--entering a function: * deactivate-mark() ฉันพยายามM-x edebug-eval-defunแต่ Edebug ไม่แสดงผู้โทรด้วย ฉันจะทราบได้อย่างไรว่าเหตุใดจึงdeactivate-markมีการเรียก(จากที่ใด) ฉันกำลังมองหาฟังก์ชั่น backtrace หรือ stacktrace แก้ไข: advice-addเคล็ดลับ: (defun message-show-backtrace () (message "%s" (backtrace-frame 10))) (advice-add deactivate-mark :before #'message-show-backtrace) ผลิตในnil*Messages* แก้ไข: ข้อมูลเพิ่มเติมเกี่ยวกับdeactivate-mark: http://emacshorrors.com/posts/deactivate-mark.html

2
ควรใช้คำพูดที่คมชัดเมื่อใด
ฉันเห็นคำพูดที่คมชัดถูกใช้ในรหัส eLisp ของผู้อื่นและฉันใช้มันด้วยตัวเอง แต่ฉันไม่ชัดเจนว่าเมื่อใดที่เหมาะสมและเมื่อไม่เหมาะสม ทุกคนสามารถอธิบายได้อย่างชัดเจนว่าเมื่อใดควรใช้เครื่องหมายคำพูดแหลมคมและควรใช้คำพูดเดี่ยวทั่วไปแทนหรือไม่
10 elisp  functions  quote  style 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.