Pattern Calculus, dillerde ileriye doğru bir adımı mı temsil ediyor yoksa sadece LISP'ye mi dönüyoruz?


11

Kitabında Barry Jay bazı cesur iddialarda bulunuyor - temel olarak, bir programın özünde her şeyin ya atomik ya da bestelendiğini söyleyerek. Daha sonra işler sadece bu kompozisyon ilişkisinde gezinerek kolayca yinelenebilir, filtrelenebilir, güncellenebilir.

Bu , Bilgisayar Bilimleri alanında bilgisayar dilleri için yeni bir sınır mı - yoksa sadece LISP'ye mi dönüyoruz?


13
Lisp'e geri dönmek bir adım daha ileri gidecekti.
Shane

4
Bu keskin bir şekilde tanımlanmış bir soru değildir: topluluk wiki'si yapılmalıdır.
Charles Stewart

@Shane'de aynı fikirde fakat türleri ve bir dizi modern kütüphaneye ihtiyacı olduğunu düşünüyorum
Hawkeye

Yanıtlar:


6

Jay'in son çalışmalarının temel faydalarından biri, harita gibi işlemleri gerçekleştirmek için veri yapılarını çaprazlamak için yazılması gereken kaynak plakasını azaltmasıdır . Desen hesabı, kişinin tüm veri yapıları için geçiş kodunu bir kez yazmasını ve kendi veri yapınıza uygulanmasını sağlar. Bu kesinlikle gerekli kod miktarını azaltır, ancak başka türlü yazamayacağınız programları yazmanıza izin vermez. Kesinlikle işte birçok ilginç fikir var, ancak aslında işe yaradığı gösterilmeye devam ediyor.


6

Barry Jay'in son çalışmasında aşina değilim, ama onun büyük iş size şeyleri içerir olamaz tipleri ek bilgi vermek için, Lisp'te yapmak.

Örneğin, bir Lisp veri yapısının boyutunu tanımlamak istediğinizi varsayalım. Bir atomunun 1, ve n, bir listesi için , n , daha genel boyut (x) + boyutu (y) atomu ve (cons x y).

Şimdi karışıma türleri atın. Bir listenin boyutu uzunluğudur. Şimdi bir atom listesi listesinin büyüklüğü nedir? Bu veri yapısını bir liste olarak görürseniz (öğeleri atom listesi olur), cevap listenin uzunluğudur. Bu veri yapısını bir liste listesinde saklanan atomlar içeren olarak değerlendirirseniz, cevap öğe listelerinin uzunluklarının toplamıdır.

Türler, ham verilerin bu iki görünümünü (şeklini) ayırt etmenizi sağlar. (Liste) (Liste Atomu) ve (Liste Listesi) (Atom) arasında ayrım yapmanıza izin veren bir tür sistemine ihtiyacınız vardır. Bu ayrımın en yaygın uygulaması tip sınıflarıdır (Haskell'de olduğu gibi).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.