İçeriğe atla
cd /languages
  • Saf fonksiyonel
  • Programlama
  • AST ve sembol desteği

Maguyva'da Haskell: tür sınıfları ve modüller için kod grafları

Maguyva, Haskell'i AST, sembol ve graf desteğiyle sunar; böylece yapay zeka ajanları modüller boyunca fonksiyonları, tür sınıfı örneklerini ve veri kurucularını izleyebilir.

Haskell yüzeysel yapay zeka araçlarını nerede şaşırtır

Haskell fonksiyonları parantezsiz çağırır, işleçlerle birleştirir ve tür sınıfları üzerinden yönlendirir. render user bir çağrıdır, f . g <$> xs birkaç çağrı içerir, show ise o türün örneği ne diyorsa onu ifade eder. Metin araması adları bulur, arkalarındaki örnekleri bulamaz.

Maguyva örnekleri ve kurucuları ilişki olarak kaydeder; böylece ajan hangi türlerin bir sınıfı uyguladığını ve bir değerin nerede oluşturulduğunu görür.

Maguyva Haskell’den neleri çıkarır

Maguyva .hs ve .lhs dosyalarını Haskell ile eşler. Fonksiyonlar ve bağlamalar çağrılabilir öğe, tür sınıfları, data türleri ve newtype türleri ise tür olarak çıkarılır. Çağrılar boşlukla ayrılmış uygulamada ve araya giren işleçler üzerinden tanınır; içe aktarmalar qualified, hiding ve as yan tümcelerini normalleştirir.

Tür sınıfları ve kurucular graf ilişkilerine dönüşür:

  • instance Eq Point, Point’in Eq’yi uyguladığını kaydeder.
  • Bir sınıf metodunun aynı dosyada varsayılan bir gövdesi varsa, o metodu tanımlayan örnek varsayılanın geçersiz kılındığını kaydeder.
  • Point 1 2 gibi bir veri kurucusunu uygulamak örnekleme sayılır.
  • error, undefined ve throw fırlatmaları, catch gibi işleyiciler ise yakalamaları kaydeder.

Örnek bildirimleri show veya return gibi adlar tanımlayabildiği için aynı dosyadaki bir tanım, bu adı taşıyan alıcısız bir çağrının hedefi olarak varsayılmaz.

Örnek ajan istemleri

  • “parseConfig’i kim çağırıyor ve hangi modüllerden?” (find_symbol, ardından dependency_search incoming)
  • “Hangi türlerin ToJSON örneği var?” (dependency_search)
  • “Bir isteğin nasıl çözüldüğünü ve doğrulandığını izle.” (get_task_context)

Bilinen sınırlar

  • map, foldr, fmap, pure ve >>= gibi yaklaşık 130 Prelude ve base adı ile Data.List ve Control.Monad gibi modüller ilişkilerden filtrelenir. Bunlar için text_pattern_search kullanın.
  • Dilbilgisinde ham bir fonksiyon düğümü fonksiyon türlerini de ifade eder; bu yüzden structural_search içindeki functions hazır ayarı yalnızca lambda döndürür, methods ve variables hazır ayarları ise hiçbir şey seçmez. Adlandırılmış fonksiyonlar için find_symbol kullanın.
  • Okuryazar .lhs dosyaları bütünüyle Haskell dilbilgisiyle okunur; bu dosyalarda kısmi sonuçlar bekleyin.
  • Haskell’de dekoratör sözdizimi yoktur; bu yüzden dekoratör ilişkileri uygulanamaz olarak işaretlenmiştir.

Sonraki adımlar

Hızlı başlangıç ile bir repo bağlayın, ardından destek matrisi için uyumluluk sayfasına bakın. Diğer fonksiyonel kod tabanları için Elixir rehberini okuyun.

En uygun kullanım

  • > Çok sayıda modül, tür sınıfı ve örnek içeren Haskell servisleri ve kütüphaneleri.
  • > Tek bir veri türündeki değişikliğin uzaklara uzandığı derleyiciler, ayrıştırıcılar ve diğer kod tabanları.
  • > Bir yeniden düzenlemeden önce tanımadıkları Haskell kodunu yapay zeka ajanlarıyla okuyan ekipler.

Ajan iş akışları

  • > Bir fonksiyonun tür imzasını değiştirmeden önce tüm çağıranlarını bulmak.
  • > Bir tür sınıfının örneğine sahip türleri listelemek.
  • > Bir veri kurucusunun nerede oluşturulduğunu ve hangi fonksiyonların onu kullandığını izlemek.

Motor ayrıntıları

  • > Haskell desteği `.hs` ve `.lhs` dosyalarını Haskell ile eşler. Tür sınıfları, `data` türleri ve `newtype` türleri türdür; çağrılar boşluklu uygulamada ve araya giren işleçler üzerinden tanınır.
  • > `instance Eq Point`, `Point`'in `Eq`'yu uyguladığını kaydeder; aynı dosyadaki bir sınıf varsayılanının yerine geçen örnek metodu ise geçersiz kılma kaydeder.
  • > Bir veri kurucusunu uygulamak örnekleme sayılır; yaklaşık 130 Prelude ve base adı ilişkilerden filtrelenir.

Yararlı MCP giriş noktaları

  • find_symbol

    Tanıma ve başvurulara ihtiyaç duyduğunuzda bir fonksiyon veya tür için kullanın; yapısal hazır ayarlar yalnızca lambda döndürür.

  • dependency_search

    Hangi türlerin örneğe sahip olduğunu görmek için bir tür sınıfı üzerinde incoming geçişi kullanın.

  • get_task_context

    "Bir isteğin nasıl çözüldüğünü ve doğrulandığını izle" gibi istemler için kullanın.