C++, Damas-Hindley-Milner stil tipi çıkarımda, tercihen modern C++ teknikleri kullanılarak uygulanan bir uygulama var mı?C++
C++
cevap
Çok şansınız olmayacağından şüpheleniyorum; Bu şeyi yazan işlevsel adamlar genellikle C++ 'da bunu yapmazlar! Gidebileceğiniz derleyicilerin çoğu kendilerini derlemek için kullanılır (örneğin OCaml veya GHC için).
Yani, birisi bir oyuncak projesi olarak Hindley-Milner yaptıysa, muhtemelen ağda değil; Derleyicinin bir parçası olsaydı, C++'da olması pek olası değil. akla gelen
Olası şeyler: Haskell için
- Hugs C olduğu; Orada istediğin şeyi yapan bir yerde C kaynakları olacak ve Haskell'in tanıdık bir şekeri var. Yine de C++ değil.
- F # hakkında bir şey bilmiyorum, ama bence bu HM, ve eğer modern tekniklerle C++ 'da şişman bir işlevsel derleyici yazmışsa, muhtemelen MS olabilir. Açıkça kapalı kaynak olsa da.
İşte Python code by Robert Smallshire dayalı my implementation of Hindley-Milner type inference in C++11, Scala code by Andrew Forrest, Nikita Borisov ve paper "Basic Polymorphic Typechecking" by Cardelli tarafından Perl kod.
boost::variant
ve boost::apply_visitor
'un ağır kullanımını sağlar.
Ayrıca, sendika bulma işlemleri için "boost :: disjoint_sets" işlevini de bulabilirsiniz. – max
Burada bir tür çıkarım motorumuz var (https://github.com/ltcmelo/psychec). Yaklaşımımız, kısıtlama üretimi ve tip çıkarımı için ayrı aşamalarla Pottier ve Remy'nin HM (X) algoritmasından sonra uygulanmaktadır. Kısıtlama üretimi C++ 'da uygulanmaktadır, ancak Haskell'de tip çözümü uygulanmaktadır (üzgünüm!). Algoritma, kısmen mevcut olan kodu yeniden oluşturmak için C programları için türler oluşturur. Araç on-line olarak mevcuttur: http://cuda.dcc.ufmg.br/psyche-c/. Bir C programının bir parçasını girersiniz ve derlemek için yeterli olan tip bildirimleri üretir.
Selamlar,
Fernando
- 1. C# tasarımcısı C: C#
- 2. C/C++
- 3. C# C#
- 4. C/C++
- 5. C/C++
- 6. C/C++ C-string tanımı
- 7. Nasıl eklenir c) c/C++ - clang?
- 8. C/C++/Objective-C metin tanıma kitaplığı
- 9. C++ C++ DLL işlevi nasıl yapılır C#
- 10. Görüntü sabitleme kütüphanesi Amaç-C/C/C++?
- 11. C++ 'dan bir yapıyla C++ çağrısı C#
- 12. C++ sayımlarını C içine alma C#
- 13. C++, C# ve ruby'den c dll çağrılıyor
- 14. C/C++ ve LibSerial
- 15. c/C++ boyutu 0
- 16. C++ RSACryptoServiceProvider C++ dönüştürün
- 17. Başlarken C Yükleme C#
- 18. C içinde "javadoc" C#
- 19. C/Objective C
- 20. C# Sudoku algoritması C#
- 21. C/C++ üstbilgisi java
- 22. C# ve C++ Kitaplığı
- 23. C++ yazdırma, C
- 24. VS2010 (C/C + +)
- 25. C++ veya C++/CLI
- 26. Yönetilmeyen C++ işlevlerinden C#
- 27. Objective-C/C# ManualResetEvent
- 28. c/C++ NLP kütüphanesi
- 29. C++ okuma sonuçları C++
- 30. C++ extern eşittir C#
Erm ... Ne Damas-Hindley'nin-Milner tarzı tipi çıkarım nedir? Herhangi bir bağlantı güzel olurdu. Ayrıca C++ 11, tür çıkarımı için 'auto' ve "template" in de işlev parametreleri olarak kullanıldığında, doğası gereği inferencing türleri olduğunu unutmayın. – Xeo
"Damas-Hindley-Milner stil tipi çıkarımı" nı ayrıntılandırabilir misiniz? Ben googling gibi hissetmiyorum. –
@BenjaminLindley: Bunun bir sorun olduğunu düşünürsünüz ki, muhtemelen bir cevap alamayacaksınız, ya da ... Cevap: –