Ana Sayfa

Diziler Fonksiyon mudur?

1 dk okuma

Haskell dokümantasyonunda dizilerin, etki alanları tam sayıların bitişik alt kümelerine izomorfik olan fonksiyonlar olarak tanımlanması, başlangıçta karmaşık ve gereksiz formalist bir ifade gibi görünse de, makale yazarı yıllar sonra bu tanımın dizilerin özünü harika bir şekilde yakaladığını belirtiyor. Dil tasarımcıları için diziler ve fonksiyonlar arasındaki bu yazışma oldukça çekicidir, zira bir dili geliştirmenin en iyi yollarından biri onu daha küçük ve tutarlı hale getirmektir. Amaç, dizilerin ve fonksiyonların temsilini birleştirmek değil; bunun yerine, sözdizimi veya tip seviyesinde birleştirmenin potansiyel sonuçları ve Futhark dilinin neden bu yolu seçmediği üzerine düşünmektir.

Bu konuda daha önce yapılmış çalışmalar bulunmaktadır. K programlama dili, hem diziler hem de fonksiyonlar için f[x] gösterimini kullanarak sözdizimsel bir birleşme sunar. Ancak, K bir APL türevi olduğundan, programlama tek tek elemanlar yerine tüm diziler üzerinde toplu işlemlerle yapılır ve bu operatörler fonksiyonlara uygulanamaz. Ayrıca, K'nin bir tip sistemi olmaması nedeniyle bu yazışma tamamen sözdizimsel düzeyde kalır. Dex ise, diziler ve fonksiyonlar arasındaki benzerliği daha çok kavramsal düzeyde ele alan bir araştırma dilidir. Dex'te a -> b fonksiyonları temsil ederken, a => b dizileri ifade eder; burada a tam sayıların bitişik alt kümelerine izomorfik bir tip olmalıdır. Bu sayede bir Dex dizi tipi, önceden hesaplanmış ve verimli bir şekilde temsil edilen bir fonksiyon olarak düşünülebilir.

Dex'te anonim fonksiyonlar \x->e şeklinde yazılırken, diziler for x.e ile oluşturulur. Fonksiyonlar için yaygın olan currying/uncurrying gibi işlemlerin diziler için de güzel yorumlamaları vardır; örneğin, bu işlemler bir diziyi düzleştirme veya düzleştirmeyi kaldırma ile eşdeğerdir. Bu yaklaşımlar, dil tasarımında diziler ve fonksiyonlar arasındaki derin bağlantıları anlamak için önemli bir zemin sunar.

İçgörü

Programlama dillerinde diziler ve fonksiyonlar arasındaki temel benzerlikleri ve bu benzerliklerin dil tasarımına etkilerini inceliyor.

Kaynak