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

Canonical source: https://maguyva.ai/tr/languages/haskell

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

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.

## Destek anlık görüntüsü

- Katman: AST ve sembol desteği
- Programlama
- Uzantılar: .hs, .lhs
- Sözdizimi farkında arama ve yapısal bağlam için gerçek AST ayrıştırması.
- Adlandırılmış semboller anlamsal aramayı ve çapraz referansı besler. İlişki çıkarımı etkinleştirildiğinde graf gezinmesi kullanılabilir.
- Bu dil, graf farkındalıklı aramaya semboller ve ilişkiler sağlar; desteklenen kenar türleri dilin yerel yapılarına göre değişir.
- Hem AST ayrıştırma hem de sembol çıkarma kullanılabilir.

## 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.

## 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ıç](/tr/docs/quickstart) ile bir repo bağlayın, ardından destek matrisi için [uyumluluk sayfasına](/tr/docs/compatibility) bakın. Diğer fonksiyonel kod tabanları için [Elixir rehberini](/tr/languages/elixir) okuyun.

## 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.
