2015-05-12 23 views
5

Farklı ocaml projelerine baktığımda, şimdiye kadar kullanılan dilde built-in Streams göremiyorum. Son Gerçek Dünya Ocaml kitabında bile, Streams'den hiç bahsedilmiyor, ki bu garip.Ocaml'daki akışlar gerçekten kullanılıyor mu?

Bunun nedeni nedir? Lwt veya Core onları desteklediğinden mi?

+1

Bu soru, alçakgönüllü bir uygulayıcının cevap vermesi için çok fazla mesleğe ihtiyaç duymaktadır. :-) Daha önce küçük projelerde akışları kullandım; zarifler. Lwt ortogonal görünür; Çekirdek daha güzel bir akış uygulamasına sahip olabilir. –

+0

@GaintSquid, uygulamaların veya akışların arandığını, bunun yerine 'gerçekten' kullanılmadıklarını açıkça belirtmek için mi? Eğer ikincisiyse, nedenini bilmiyorum, ama eğer cevapsa, cevap vereceğim! – matrixanomaly

+0

@matrixanomaly Bu doğru. Ama aynı zamanda gerçek yazılımlardaki Akım uygulamalarını görmek istiyorum. – GiantSquid

cevap

7

Sanırım bu soruyu this bug report numaralı telefondan yanıtladım.

+0

Bu gerçekten çok önemli.Ocaml'ın kendisinde bağımlılıkları ortadan kaldırmak için bir kütüphane yapmayı teklif etseler de, doğru mu? – GiantSquid

+0

İstek, * kullanımdan kaldırılma * içindir. Kaldırma değil. Bu oldukça farklı. Her durumda, evet, derleyicinin dışına konur (ve umarım, daha iyi kütüphaneler lehine kullanılmaz). – Drup

1

Özellikle OCaml hevesli bir dil olduğundan, OCaml'da 'tembel değerlendirme' için akışlar kullanılabilir, çünkü (Haskell'de olduğu gibi) temkinli değerlendirme istendiği kesin vakalar vardır.

bir lecture in Cornell on streams,

Akışları gerçek hayatta aslında yararlıdır aktaran. Bazı uygulamalar:

  • ağ yuvaları yakınsak dizi
  • kullanarak denklem çözümleri yaklaşan
  • ses ve video sinyal işleme
  • ses tanıma
  • metinden kaynak dosyasını okuma

    • derleyiciler

      Sağlanan referans ayrıca, p değerini hesaplamak için akışları kullanır. Eratosthenes elek kullanarak büyük primleri hesaplamak için normal yolla karşılaştırıldığında çok hızlı olan lazy, rimes. Bu nedenle, derlemelerin OCaml'de temkinli bir değerlendirme yapılmasına izin verdiği için dilde kesinlikle yeri olduğunu hissediyorum.

      Akışları, bu Gerçek Dünya OCaml belirtilmeyen nedeni dili kendisi istekli olabilir hevesli dilde tembel değerlendirme kavramını açıklamak için benim Profesör tarafından kullanılan ve akarsular bununla paralel değildir kavram ve bu akışlar mutli iş parçacığı olamaz. (Ancak bu, spekülasyon)

  • 2

    Akımlar, camlp4 sözdizimi desteğiyle oldukça iyiydi, onlar olmadan hiç kullanılamadılar. Yani, bu, geçmişte uzun zaman oldu (teorik olarak hala kullanılabilir olsa da). Drup'un referansına göre, çekirdek dilden yakın bir gelecekte (bu yıl) bile kaldırılacaklardı ve muhtemelen bağımsız bir kütüphaneye taşınacaklardı.

    Bu, veri yapıları olarak akışlarla ilgili bir sorun olduğu söylenemez. Bu hala birçok OCaml projesinde kullanılan çok değerli bir tekniktir, sadece bunu uygulayan farklı kütüphaneleri kullanırlar. Çekirdek Sequence, Piller Enum, Simon Cruanes'in gen ve sequence paketlerinde, Joseph Abrahamson'un bir kaç isim için fstream paket bulunmaktadır.

    +0

    Sadece nitpick için, Simon Cruanes'in paketleri "gen" ve "dizi" dir. ;) – Drup

    İlgili konular