8
เหตุใดจึงมีฟังก์ชั่นสองประเภทในยาอายุวัฒนะ?
ฉันเรียนรู้ยาอายุวัฒนะและสงสัยว่าทำไมมันมีนิยามของฟังก์ชันสองประเภท: ฟังก์ชั่นที่กำหนดไว้ในโมดูลด้วยdefเรียกว่าการใช้myfunction(param1, param2) ฟังก์ชั่นไม่ระบุชื่อที่กำหนดด้วยfnเรียกว่าใช้myfn.(param1, param2) มีเพียงฟังก์ชันประเภทที่สองที่ดูเหมือนเป็นวัตถุชั้นหนึ่งและสามารถส่งผ่านเป็นพารามิเตอร์ไปยังฟังก์ชันอื่นได้ fnฟังก์ชั่นที่กำหนดไว้ในความต้องการโมดูลที่จะห่อใน มีน้ำตาลซินแทคติคที่ดูเหมือนotherfunction(myfunction(&1, &2))จะทำให้ง่าย แต่ทำไมมันจำเป็นในตอนแรก? ทำไมเราทำotherfunction(myfunction))ไม่ได้? มันเป็นเพียงเพื่อให้ฟังก์ชั่นการโทรโมดูลโดยไม่ต้องวงเล็บเช่นในทับทิม? ดูเหมือนว่าจะมีการสืบทอดคุณสมบัตินี้จาก Erlang ซึ่งมีฟังก์ชั่นโมดูลและฟังก์ชั่นสนุกด้วยเช่นกันจริง ๆ แล้วมันมาจากวิธีที่ Erlang VM ทำงานภายในหรือไม่ มันมีประโยชน์อะไรบ้างที่มีฟังก์ชั่นสองประเภทและแปลงจากประเภทหนึ่งไปเป็นอีกประเภทหนึ่งเพื่อส่งผ่านไปยังหน้าที่อื่น ๆ ? มีประโยชน์ไหมที่มีเครื่องหมายสองแบบที่แตกต่างกันในการเรียกใช้ฟังก์ชัน?