" เพียวหน้าที่ Programming" ในความหมายอย่างเป็นทางการของมันเป็นเรื่องเกี่ยวกับความคิดของการออกแบบเครื่องคอมพิวเตอร์ที่มีการส่งออกเป็นอย่างหมดจด"ฟังก์ชั่นของการป้อนข้อมูลไปยังเครื่อง" หากคุณป้อนอินพุตเดียวกันลงในเครื่องมันจะสร้างเอาต์พุตเดียวกัน แต่ละอินพุตมีชื่ออย่างชัดเจนเพื่อให้คุณรู้ว่าการอ้างอิงคืออะไร ภาษาโปรแกรมที่ใช้งานได้จริงบังคับใช้สิ่งนี้อย่างจริงจัง
แต่ ... ในพื้นฐาน "Rebol" คุณสามารถเขียนสิ่งที่ชอบ:
foo: function [value [integer!]] [
either now/date = 20-Feb-2013 [
value + 1
] [
value
]
]
ที่นี่เราเห็นฟังก์ชั่นที่คืนค่าอินพุตจำนวนเต็มทุกวัน แต่วันนี้ที่คุณได้รับค่าบวกหนึ่ง มันรวมถึงการพึ่งพาที่มองไม่เห็นในวันที่ไม่ได้ระบุอย่างเป็นทางการเป็นข้อโต้แย้งกับฟังก์ชั่น มันเป็นสิ่งที่ทำให้คน Haskell และเจ้าหน้าที่ทางการซอฟต์แวร์อย่างผมกรีดร้องด้วยการฆาตกรรมนองเลือด
ดังนั้น REBOL ไม่บริสุทธิ์ออกจากการทำงานของกล่อง (... แต่อ่านต่อ ... )
คำจำกัดความที่เข้มงวดน้อยกว่าของการโปรแกรมมิงฟังก์ชันคือเมื่อฟังก์ชันสามารถทำหน้าที่เป็นค่าในภาษา ดังนั้นคุณสามารถกำหนดฟังก์ชั่นให้กับตัวแปรและใช้มันในภายหลัง ในแง่นั้นคุณสามารถไปอ่านสิ่งที่ชอบได้คือจาวาสคริปต์เป็นภาษาที่ใช้งานได้และดูว่าคำจำกัดความที่ทำให้คนบางคนพูดว่า Javascript เป็นภาษาที่ใช้งานได้ หากคุณกำลังจะหลวมที่มีความหมายแล้วนี่จะเป็น "การทำงาน":
>> foo: does [a + 10]
>> a: 20
>> print foo
== 30
(หมายเหตุ: DOES เป็นความสะดวกสบายสำหรับการกำหนดฟังก์ชันโดยไม่มีอาร์กิวเมนต์ที่มีเพียงเนื้อหา)
ฉันไม่รู้ว่าฉันจะพิจารณาว่า (หรือ JavaScript) เพื่อให้เหมาะกับสิ่งที่ผู้คนที่ฉันคุยด้วยจะเรียกการเขียนโปรแกรมใช้งานได้ YMMV
หากคุณใช้เวลาในวิชาวิทยาศาสตร์คอมพิวเตอร์คุณจะได้เรียนรู้เกี่ยวกับสิ่งต่าง ๆ เช่นทัวริงทาร์พิทและความสามารถในการคำนวณและหลักการเรียงลำดับเหล่านี้ที่ "ถ้าคุณสามารถเชื่อมต่อ X กับ Y แล้ว Z จะเป็นจริง" และเช่นเดียวกับที่คุณเขียนการติดตั้ง Haskell ใน C และจากนั้น จำกัด ตัวคุณเองเพียงแค่ใช้การโทร C ที่แมปไว้ในไลบรารี Haskell คุณอาจอ้างว่าคุณกำลังทำ "ฟังก์ชันการเขียนโปรแกรม" และถูกต้องทางเทคนิค
ดังนั้นถ้าคุณต้องการที่จะบอกว่า Rebol สามารถโค้งงอกับรูปแบบการเขียนโปรแกรมที่ใช้งานได้คุณอาจเป็นคนมองโลกในแง่ร้ายและพูดว่า"มันไม่ดีไปกว่าการแสร้งทำคุณกำลังทำ C เมื่อคุณใช้ชุดย่อยของภาษา กำลังใช้ Haskell ด้วยพร็อกซี " . เคล็ดลับแขนเสื้อของ Rebol นั้นง่ายแค่ไหนที่คุณลื่นหลุดจากกระบวนทัศน์ "การหมุน" หนึ่งไปยังอีก การเขียนภาษาเฉพาะโดเมนเล็ก ๆ น้อย ๆ ที่เกิดขึ้นเพื่อการใช้งานนั้นง่ายและเป็นธรรมชาติที่ไม่รู้สึกว่าคุณกำลังบิดภาษาของคุณออกจากการร่วมทำ ความสามารถในการที่จะทำให้ภาษาเฉพาะโดเมนที่มีโอกาสในการขายตัวละครที่ทำงานเพื่อการติดฉลากของ REBOL เป็น"กระบวนทัศน์เป็นกลาง"
หลายคนรวมกัน Rebol กับภาษาถิ่นที่พบบ่อยที่สุด (ภาษา DO) และคิดว่า "นั่นคือสิ่งที่ Rebol เป็น" แต่ "สาระสำคัญ" ของ Rebol นั้นเหมือนกับ XML มันเป็นรูปแบบการแลกเปลี่ยนข้อมูลที่บังเอิญ(โอเคไม่ได้เกิดขึ้นโดยบังเอิญ)มีโค้ดที่ปรับให้เหมาะสมมากเกินไปโดยมุ่งเน้นที่การประมวลผลในบางวิธีนอกกรอบ สำหรับการอ่านพื้นหลังที่ดีเกี่ยวกับวิธีการตีกางเกงออกจาก XML ดูว่า XML มีข้อบกพร่องจากการเริ่มต้นโดย Carl Sassenrath ของ AmigaOS (และตอนนี้ชื่อ Rebol) มีชื่อเสียง