2013-04-08 33 views
2

我試圖調試一些方案代碼。如果我可以打印變量的內容或綁定,這會有所幫助。方案等價於ruby調試「p」語句

是否存在與Scheme中的'p'語句相當的Ruby。

特別是,我使用的是Racket。

+0

你在找'print'嗎?請參閱:http://docs.racket-lang.org/reference/Writing.html#%28def._%28%28quote._~23~25kernel%29._print%29%29和http://docs.racket -lang.org/guide/read-write.html獲取更多信息。 – dyoo 2013-04-08 22:00:08

回答

5

沒有p等價物,但它很容易推出自己的。

#lang racket 

(define-syntax-rule (p e) 
    (let ([ans e]) 
    (printf "~a => ~a\n" (quote e) ans) 
    ans)) 

(p (+ 1 2)) 

輸出

(+ 1 2) => 3 
3 

作爲一個技術含量低的替代方法,您還可能有興趣在C-c C-l keyboard shortcut in Racket

1

您可以使用display在評估窗口中顯示變量的內容,或者您​​希望更好地控制輸出的格式printf。但是,這相當於在Ruby中調用puts - 因爲Ruby的p在對象上調用inspect,所以我無法想象在Scheme中直接相當於p

+1

'write'非常相似,但是如果可能的話,它會輸出一個'read'able''版本。 – 2013-04-08 21:57:15

+0

「p」最重要的屬性是它的參數值,它意味着你可以將它插入到表達式的任何位置而不會改變它的結果,而'print'和'puts'則評估爲'nil'。從它的外觀來看,'display'和'printf'家族不這麼做。 – 2013-04-08 22:56:35