2016-04-08 17 views
0

Int listesinin doğrudan yazdırıldığı herhangi bir işlev var mı? Hata ayıklama amaçları için int list yazdırmak zorundayım. Bunu kendi işlevlerimi yazarak başarabileceğimi biliyorum ama bunun başka bir yöntemi olduğunu bilmek isterim.sml olarak yazdırma int list

cevap

0

SML/NJ SML diğer bazı uygulamaları gibi oldukça baskı gibi birçok özellik yok ama onun PRINTCONTROL signature miktar esneklik: listeleri için

, onlar yazabilir noktaya gelmek. Örneğin

, varsayılan ayarlarla bu vardır:

enter image description here

Ama Repl size

Control.Print.printLength := 500; 

ve sonra

Control.Print.linewidth := 80; 

değerlendirmek durumunda:

Poly/ML yılında

enter image description here

0

Hayır, SML'de dizelerden başka bir şey yazdırmanın yerleşik bir yolu yok. Kendi yardımcı programlarınızı yazıyorsunuz veya işlevlerinizi REPL içinde ayrı ayrı test edilebilecek daha küçük bileşenlere ayırıyorsunuz ve daha sonra otomatik olarak geri dönüş değeri elde edebileceksiniz. http://mlton.org/TypeIndexedValues#_signature:

kendi araçları oluşturmak istiyorsanız

, MLton wiki yerleşik türlerinin çoğu yazdırmak için, bağdaştırıcılarla küçük bir kütüphane kurmaya nasıl açıklayan bir sayfası vardır.

val "[3, 1, 4]" = 
    let open Show in show (list int) end [3, 1, 4] 
1

uygun oldukça desenli işlevini kullanarak en değerlerini yazdırır özel bir fonksiyon PolyML.print yoktur. Standart ML'nin bir parçası değildir, bu nedenle PolyML yapısındadır. İşlev polimorfik olabiliyorsa, tip kısıtlaması kullanmanız gerekebilir.

> fun f (x: int list) = (PolyML.print x;()); 
val f = fn: int list -> unit 
> f [1,2,3,4]; 
[1, 2, 3, 4] 
val it =(): unit 

Hata ayıklayıcıyı kullanarak Poly/ML'de daha kapsamlı hata ayıklama bilgilerini alabilirsiniz. Bakınız http://www.polyml.org/documentation/Tutorials/Debugging.html.