Sadece SML ile başlıyorum ve bazı kodları değiştirmeye çalışıyorum, bu yüzden ne yaptığını anlıyorum (iyi bir SML/NJ hata ayıklayıcısı bulamıyorum, ama bu ayrı bir soru). Ben davaya ' 'tamsayı' dönen' demek için bir baskı beyanı nasıl eklerim SML'de bir vaka bildiriminin içine nasıl yazdırırsınız?
fun type_check e theta env non_gens =
case e of
constant_int _ => (integer,theta)
|
constant_bool _ => (boolean,theta)
| ...
vb, bu durum constant_int geçerli kod, bir veri türü kısmı zaten ilan olduğunu varsayalım? Denedim:
...
constant_int _ => (print "returning integer") (integer,theta)
...
Ama olsun:
stdIn:167.22-167.65 Error: operator is not a function [tycon mismatch] operator: unit in expression: (print "returning integer") (integer,theta)
Ben sadece dönüş değeri olarak ele alınmalıdır sadece son hangi tabloların bir dizi, yürütmek için nasıl anlayamıyorum düşünüyorum. Herhangi bir tavsiye?
Ayrıca, kendi veri türü değemi nasıl yazdırırım? SML baskıya() bir veri türü değerini iletmeye çalıştığımda hoşuma gitmedi, bu yüzden muhtemelen her veri türü için yeni bir yazdırma işlevi oluşturmalıyım, doğru mu?
Daha yüksek önceliği kastediyor musunuz? – Shuzheng
@nlykkei: Hayır, daha düşük önceliği kastediyorum. Olgu ekspresyonu ilk önce gruplanmıştır, çünkü daha yüksek önceliğe sahiptir, daha önceliği olan, en dıştaki yapı olan noktalı virgülü bırakır. – newacct