ใครเป็นคนแรกที่ประกาศเกียรติคุณฟังก์ชันคำสั่งซื้อที่สูงขึ้นและ / หรือพลเมืองชั้นหนึ่ง?


9

ฉันเข้าใจมานานแล้วว่าก่อนที่ Haskell, O'Caml หรือ LISP หน้าที่การสั่งงานที่สูงขึ้นจะเป็นวิชาวิจัยทางวิชาการและในวิชาคณิตศาสตร์Schönfinkel (ในปี 1967) และ Haskell Curry (ในปี 1968) ได้ใช้เทคนิคเช่น currying แต่ ก่อนหน้านี้มีให้ในภาษาการเขียนโปรแกรมใด ๆ

Scheme ตาม Wikipediaเป็นภาษาแรกที่แนะนำฟังก์ชั่นการสั่งซื้อที่สูงขึ้นอย่างเหมาะสมในฐานะพลเมืองชั้นหนึ่ง แต่มีใครบ้างที่เราสามารถให้ความคิดดั้งเดิมได้ บางทีโบสถ์อลองโซผู้คิดค้นแลมบ์ดาแคลคูลัสในทศวรรษ 1930? โดยเฉพาะอย่างยิ่งใครเป็นผู้นิยามคำนิยามต่อไปนี้ซึ่งฉันเห็นในการถอดความหลายเรื่องในหนังสือหลายเล่มและแหล่งข้อมูลออนไลน์

ฟังก์ชั่นจะถือว่าเป็นลำดับที่สูงขึ้นเมื่อใช้ฟังก์ชันอื่นเป็นอาร์กิวเมนต์หรือเมื่อส่งคืนฟังก์ชัน ฟังก์ชันใด ๆ ที่ไม่รับฟังก์ชั่นเป็นอาร์กิวเมนต์หรือเป็นชนิดส่งคืนจะเรียกว่าฟังก์ชันลำดับแรก


1
คุณหมายถึง Moses Schönfinkel? แล้วคุณจะต้องไม่ถูกต้องเกี่ยวกับเขาในปี 1967 เขาเสียชีวิตในความยากจนในปี 1942
Petr Pudlák

และไม่เป็น 1967 ก่อน LISP :-)
jimwise

คำตอบ:


9

Frege พูดว่าใน "Funktion und Begriff" (1891):

คุณแม่ Funktionen von Gegenständen grundverschieden sind, ดังนั้น auch Funktionen, deren Argumente Funktionen sind und sein müssen, Grundverschieden von Funktionen, deren Argumente Gegenstände Diese nenne ich Funktionen ยิ่งใหญ่, Jene Funktionen zweiter Stufe

ในภาษาอังกฤษ (คำแปลของฉัน):

เช่นเดียวกับสิ่งต่าง ๆ และฟังก์ชั่นที่แตกต่างกันดังนั้นฟังก์ชั่นที่มีข้อโต้แย้งเป็นฟังก์ชั่นที่แตกต่างอย่างสิ้นเชิงจากฟังก์ชั่นที่มีข้อโต้แย้งจะต้องเป็นสิ่งที่ ฉันเรียกฟังก์ชันหลังของคำสั่งแรก, หน้าที่เดิมของคำสั่งที่สอง


1
อ้างอิงที่ดี! แน่นอนมันจะเป็นอิสระ
sclv

น่าสนใจว่าการเขียนโปรแกรมฟังก์ชั่นที่ทันสมัยใช้มุมมองตรงกันข้าม - เท่าที่จะทำได้ (หรืออย่างน้อยที่สุดเมื่อใดก็ตามที่คุณทำงานในหมวดหมู่ปิด) ไม่มีความแตกต่างระหว่างฟังก์ชั่นที่อาร์กิวเมนต์เป็นฟังก์ชันและฟังก์ชันที่อาร์กิวเมนต์ต้องเป็นสิ่งต่าง ๆ
Chris Taylor

เครื่องพิมพ์ดีดยังคงเตือนฉันเมื่อฉันมิกซ์ @ChrisTaylor :)
Ingo

1
ฟังก์ชั่นก็มีสิ่งต่าง ๆ เช่นกันเพื่อนของฉัน (เพื่อถอดความนวมรอมนีย์.)
สิงหาคม

1
ฉันหนึ่งครั้งในตรรกะและเราใช้คำนิยามสำหรับโดเมนที่ไม่แยกความแตกต่างระหว่างค่าคงที่และฟังก์ชัน: ค่าคงที่ (ค่า) เป็นเพียงฟังก์ชันที่ไม่มีอาร์กิวเมนต์เช่นฟังก์ชันที่ค่าไม่ได้ขึ้นอยู่กับค่าอินพุตใด ๆ และ ดังนั้นโดเมนร่วมจึงมีเพียงค่าเดียว
Giorgio

3

บทความวิกิพีเดียมีคำศัพท์ที่ว่า "พลเมืองชั้นหนึ่ง" มาแล้วที่ Strachey

"ฟังก์ชั่นการสั่งซื้อที่สูงขึ้น" ฉันจะจินตนาการถึงวันที่กลับไปสู่ความแตกต่างระหว่างการสั่งซื้อที่สูงขึ้นและตรรกะการสั่งซื้อครั้งแรก

ดูhttps://en.wikipedia.org/wiki/Higher-order_logicและhttp://plato.stanford.edu/entries/logic-higher-order/


ฉันไม่แน่ใจว่าลอจิกลำดับสูงกว่าและฟังก์ชันลำดับสูงกว่านั้นสามารถใช้แทนกันได้อย่างง่ายดายหรือไม่ ขอบคุณที่ชี้ให้เห็น Strachey ฉันอ่านอย่างนั้น
Abel

2
"ฟังก์ชั่นการสั่งซื้อที่สูงขึ้น" มีอยู่ในงานของ Frege (ฟังก์ชั่นรับฟังก์ชั่นเป็นข้อโต้แย้ง) ซึ่งไกล่เกลี่ยก่อนหน้านี้งานพื้นฐานของศาสนจักรในแลมบ์ดาแคลคูลัส เพรดิเคตในคลาสสิกลอจิกแรกคือฟังก์ชันที่มีค่าบูลีนดังนั้นฉันจึงแนะนำ sclv ที่สองว่านี่อาจเป็นแหล่งที่มาของคำศัพท์
Philip JF
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.