16 Punkte von alstjr7375 2022-09-01 | 1 Kommentare | Auf WhatsApp teilen
  • Ein neues Rechenmodell namens Interaction Net, das Turing Machine und Lambda Calculus kombiniert
  • Verwendet statt des komplexen Borrowing-Modells von Rust ein lazy clone-Primitive, ähnlich der Auswertungsstrategie von Haskell
  • Da es lazy ist, sind die Kosten für das Klonen nahezu vernachlässigbar; anders als bei Haskell kann die Berechnung innerhalb von Lambdas geteilt werden, was besonders bei Parallelverarbeitung große Vorteile bringt
  • Wählt ein auf SIC(Symmetric Interaction Calculus) basierendes Speichermodell und eliminiert dadurch einen großen Teil der Kosten für Pointer-Indirektion, die bei dem in Haskell usw. als Graph Reduction bezeichneten Ansatz erforderlich waren (vorteilhaft, wenn sich das Optimum finden lässt)
  • Das heißt: Im Vergleich zu herkömmlichen Sprach-Runtimes kommt es ohne GC aus und hat Stärken bei Parallelität und optimaler Verarbeitung

1 Kommentare

 
alstjr7375 2022-09-01

Hier ist eine QuickSort-Implementierung.
Vielleicht weil der Lambda-Kalkül intensiv genutzt wird, sieht es ein bisschen wie Lisp aus..?

// 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))