Scala etkilerinin tarihsel kökenleri


14

Scala, birçok meslektaşım tarafından belirlenen zengin özelliği ile karmaşık olarak adlandırıldı ve hatta bazıları bu yeni özellikleri suçladı . Çoğu programcı OO özelliklerinin farkında olsa da ve en azından iyi olanları da fonksiyonel programlama hakkında bilgi sahibi olsa da, özellikle Scala'da tarihsel kökenlerinden haberdar olmadığım bir özellik var.

Mesleğimizin önemli mantra tekerleği yeniden icat etmek olduğunu göz önüne alındığında, Scala yok, daha doğrusu eminim herhangi fiili duyulmamış-öncesi özelliklerini, ama gerekirse bu bir düzeltilmesi standı.

Asıl soruya ulaşmak için, Scala'nın özelliklerinin çoğunun kökenlerinin farkındayken, daha önce hiç implicitbeyanı gibi bir şey görmedim . Bu özelliği sağlayan başka (eski!) Diller var mı?

Farklı imaları (farklı kaynaklardan kaynaklanabilecekleri gibi), yani dönüşümleri ve örtük parametreleri ayırt etmek mantıklı mıdır?



@gerferra Tam bir kopya değil ve siteler arası bir kopya fikri yok. İsterseniz, SO sorusunu ve cevaplarını ve referanslarını referans alarak bir cevap oluşturabilirsiniz, bu tamamen kabul edilebilir.
yannis

Yanıtlar:


9

Brian'ın diğer soruya verdiği cevaba katılmıyorum.

Bildiğim kadarıyla, başka bir dilde örtük bir kavram yok . Scala için değişiklik geçmişi, imaların görünüm sınırlarının genelleştirilmesi olduğunu ve sınırlı bir görünümün kendisinin, çok yaygın olan otomatik tip dönüşümünün genelleştirilmesi olduğunu ima eder.

Daha sonra yazım sınıflarını etkinleştirdi, ancak bu orijinal niyet olsaydı çok şaşırırdım.

Düzenle

Scala 2.0 (2006) sürüm notları şunları söylüyor:

Scala 1.0'daki görünümlerin yerini örtük parametrelerin daha genel konsepti aldı

Bu elbette, örtük parametrelerin görünümleri değiştirmek amacıyla tanıtıldığı anlamına gelmez.

Bununla birlikte, Odersky, bir kez kavram birden çok şeyin yerini alabildiğinde bunu açıkça sever. Bu anlamda, Odersky'nin tip sınıfları istemesi iyi olabilir, ancak bunu sadece ele almak için bir mekanizma tanıtmak istemiyor olabilir ve bu nedenle, bir kavramı (Görünümler) kaldırmasına ve değiştirmesine izin veren başka bir şey ortaya koymuştur. hem görünümleri hem de yazım sınıflarını işleyen daha genel bir kavramla.

Herkesin ilgilenmesi durumunda, Brian tarafından Stack Overflow'da atıfta bulunulan Zavallı Adamın Tip Sınıfları da 2006 tarihli. Açıkçası, Odersky onları tanıttıklarında imalar ve tip sınıfları arasındaki bağlantının farkındaydı.

Yine de iddiamın yanındayım. :-)


Norman Ramsey'in yanıtı ne olacak? stackoverflow.com/a/3071461/63489 . Haskell'de önceki bir örtülü dönüşüm uygulamasına atıfta bulunur
gerferra

@gerferra Kulağa makul geliyor - Odersky'nin bu makalede bahsedildiğine dikkat edin. Mekanizma farklıdır, ancak topun yuvarlanması iyi olabilir. Odersky'nin atıfta bulunulan makalesinde tür sınıfları tartışılıyor ve 2006'da Brian'ın aktardığı "Zavallı Adamın Tür Sınıfları" sunumunun çıktığı çıkarımlar tanıtıldı - açıkça, bir bağlantı var. Yine de, Scala 2.0 (2006) sürüm notları "Scala 1.0'daki görünümlerin yerini daha genel örtük parametreler kavramı aldı" diyor . Odersky'den bildiğim kadarıyla, birden fazla sorunu çözen bir mekanizma onu çok çekecekti.
Daniel C. Sobral

yeterince adil :-)
gerferra

4

Implicit scala'da iki farklı anlama gelir

  1. Örtük Parametreler. Bunlar Haskell'de ve belki de diğer dillerde çıktı. Destekleyici kanıtlar: 2000 Bu yazı ve GHC 5.04.1 belgeleri (Eylül-2002, daha önce orada oldu bir Scala)
  2. Örtük dönüşümler. Bunlara sahip olan ilk dili bilmiyorum, ancak implictScala'nın ilk sürümünü yaklaşık bir yıl öncesine dayanan C # 1.0'da ( anahtar kelimeyi kullanarak ) vardı.

+1, örtük dönüşümlerin C # 'da mevcut olduğunu bilmiyordum. İşaretçi için teşekkürler.
Frank

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.