Semicolons, SML'de bir dizi sözdizim öğesi için kullanılır. Bunlar normal olarak, örneğin, ifadeler veya beyanlar dizileri oluşturmak için kullanılır. İşte SML dilbilgisi için bir bağlantı:
http://www.mpi-sws.org/~rossberg/sml.html
sizin durumda, bildirimleri için noktalı virgül (Aralık sınıfı) ilgileniyor. Bir aralık dizisi oluşturan noktalı virgülün isteğe bağlı olduğunu unutmayın. SML modülleri yazarken aslında ona hiç ihtiyacınız yok ve onları görmek nadirdir. Örneğin
kaynağı dosyasında değil
structure S = struct
val x = 5;
fun f x = x;
val z = x + x
end
structure S = struct
val x = 5
fun f x = x
val z = x + x
end
, normalde bir noktalı virgül yan etkilere sahip ifadeler ayıran kullanmak tek yer için. Örneğin,
Ancak bu kullanım nadirdir.
smlnj repl, bir noktalı virgül görse bile yalnızca bildirimleri değerlendirir, bu nedenle değeri görmek veya oynatmak istediğinizde noktalı virgül kullanmalısınız. Sanırım use "foo.sml";
davası kafa karıştırıcı, çünkü bu bir deklarasyon değil; bu bir ifade. Bu repleksin use "foo.sml"
gibi ifadeleri val _ = use "foo.sml"
'a dönüştürdüğünü hayal ediyorum. Bu nedenle, yukarıdaki gibi, gerçekten çalıştırmak için replise söylemek için noktalı virgül gerekiyor. Bir yan not olarak, use
hakkında özel bir şey yoktur. Bu sadece string -> unit
tipinin bir fonksiyonudur.
Teşekkürler. Şimdi beyanlarda neden gerekli olmadığını biliyorum. Ve sonra neden "foo.sml", "kullanımı" nda gerekli olduğunu açıklayabilir misiniz? Hala anladım. – Ben
Yukarıda açıklığa kavuşturmaya çalıştım. – seanmcl
+1 SML dilbilgisi başvurusu için. –