SORU
5 Ocak 2012, PERŞEMBE


Scala yazın Lambda nedir ve faydaları nelerdir?

Bir ara yarı gizemli gösterimde içine yanılmak

def f[T](..) = new T[({type l[A]=SomeType[A,..]})#l] {..} 

bir "tip-lambda hile" handwave. eskiden olan Scala blog yazıları,

Bu konuda bazı intutition (anonim tür bir parametre kazanırız bununla tanımı kirleten zorunda kalmadan A?), ben varken Net bir kaynak türü lambda hile nedir ve ne faydaları vardır tarif buldum. Sadece sözdizimsel şeker mi, yoksa bazı yeni boyutlar açılıyor?

CEVAP
5 Ocak 2012, PERŞEMBE


Tip Lambda hayati yüksek kinded türleri ile çalışırken zaman biraz.

Ya doğru projeksiyon için bir monad tanımlamanın basit bir örnek[A, B] düşünün. Monad typeclass bu gibi görünüyor:

trait Monad[M[_]] {
  def point[A](a: A): M[A]
  def bind[A, B](m: M[A])(f: A => M[B]): M[B]
}

Şimdi, Ya bir tür İki argüman yapıcı, ama Monad uygulamak için, bu tür bir tartışmanın yapıcı vermek gerekir. Bu çözüm bir tür lambda kullanmak için:

class EitherMonad[A] extends Monad[({type λ[α] = Either[A, α]})#λ] {
  def point[B](b: B): Either[A, B]
  def bind[B, C](m: Either[A, B])(f: B => Either[A, C]): Either[A, C]
}

Bu bir örnektir tımar türü sistem - körili türü Ya da böyle o zaman istediğiniz bir kopyasını oluşturmak için EitherMonad, belirtmek bir tür; diğer ders verilen zaman Ara nokta ya bağlamak.

Tip lambda hile türü bir pozisyonda boş bir blok anonim yapısal bir türü oluşturur aslında patlatır. Biz o zaman bir tür almak için # sözdizimi üye kullanın.

Bazı durumlarda, daha karmaşık türü Lambda gereken satır yazmak için bir ağrı vardır. İşte bugün benim kod bir örnek:

// types X and E are defined in an enclosing scope
private[iteratee] class FG[F[_[_], _], G[_]] {
  type FGA[A] = F[G, A]
  type IterateeM[A] = IterateeT[X, E, FGA, A] 
}

Bu sınıf var sadece bu yüzden kullanabilirim adı gibi MOTORLAR[F, G]#İterateeM başvurmak türü İterateeT monad özel bazı trafo sürümü ikinci bir monad olan özel bazı üçüncü monad. Yığın başlattığınızda, yapıları bu tür çok gerekli hale gelir. Hiç bir DİNLEYİCİ, elbette örneğini; bir de ben ne istediğimi ifade etme tür sistem kesmek gibi.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MADFINGER Games a.s.

    MADFINGER Ga

    21 NİSAN 2009
  • Make:

    Make:

    23 Mart 2006
  • Videogamerz | Call of Duty

    Videogamerz

    5 NİSAN 2012