16 คะแนน โดย alstjr7375 2022-09-01 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • โมเดลการคำนวณแบบใหม่ชื่อ Interaction Net ที่ผสาน Turing Machine และ Lambda Calculus เข้าด้วยกัน
  • ใช้ lazy clone primitive ที่มีลักษณะคล้ายวิธีประเมินผลของ Haskell แทนโมเดลการยืมอันซับซ้อนของ Rust
  • เนื่องจากเป็นแบบ lazy ต้นทุนของการคัดลอกจึงแทบจะเป็นศูนย์ และต่างจาก Haskell ตรงที่สามารถแชร์การคำนวณภายใน lambda ได้ (ให้ประโยชน์มากในการประมวลผลแบบขนาน)
  • เลือกใช้โมเดลหน่วยความจำที่อิงกับ SIC(Symmetric Interaction Calculus) จึงลดต้นทุนของการอ้างอิงทางอ้อมผ่านพอยน์เตอร์ลงได้มาก เมื่อเทียบกับวิธีที่ใน Haskell และภาษาอื่น ๆ เรียกว่า Graph Reduction (ได้ประโยชน์เมื่อหา Optimal ได้)
  • กล่าวคือ เมื่อเทียบกับรันไทม์ของภาษาทั่วไปแล้ว มันไม่มี GC และมีจุดเด่นด้านการประมวลผลแบบขนานและการทำงานแบบ Optimal

1 ความคิดเห็น

 
alstjr7375 2022-09-01

นี่คือตัวอย่างการเขียน QuickSort ครับ
ดูเหมือนจะคล้าย Lisp อยู่เหมือนกัน น่าจะเพราะใช้ Lambda Calculus อย่างหนักเลยหรือเปล่า..?

// QuickSort  
(QSort p s Nil)          = Empty  
(QSort p s (Cons x Nil)) = (Single x)  
(QSort p s (Cons x xs))  =  
  (Split p s (Cons x xs) Nil Nil)  
  
// Splits list in two partitions  
(Split p s Nil min max) =  
  let s   = (>> s 1)  
  let min = (QSort (- p s) s min)  
  let max = (QSort (+ p s) s max)  
  (Concat min max)  
(Split p s (Cons x xs) min max) =  
  (Place p s (< p x) x xs min max)  
  
// Sorts and sums n random numbers  
(Main n) =  
  let list = (Randoms 1 (* 100000 n))  
  (Sum (QSort Pivot Pivot list))