C++

2012-01-08 14 views
11
içinde uygulanan türden çıkarımlar

C++, Damas-Hindley-Milner stil tipi çıkarımda, tercihen modern C++ teknikleri kullanılarak uygulanan bir uygulama var mı?C++

+1

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

+0

"Damas-Hindley-Milner stil tipi çıkarımı" nı ayrıntılandırabilir misiniz? Ben googling gibi hissetmiyorum. –

+10

@BenjaminLindley: Bunun bir sorun olduğunu düşünürsünüz ki, muhtemelen bir cevap alamayacaksınız, ya da ... Cevap: –

cevap

1

Ç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.
0

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