cro*_*ing 5 emacs sicp racket read-eval-print-loop
我在使用#lang planet/neilRacket中的指令从SICP做问题.我更喜欢在Emacs中编写代码,而我正在使用Geiser模式通过Emacs运行Racket REPL.
球拍打印结果的方式倾向于使用很多,mcons这使得结果难以阅读.
racket@chap2.4.rkt> (list 1 2 3 4)
(mcons 1 (mcons 2 (mcons 3 (mcons 4 '()))))
Run Code Online (Sandbox Code Playgroud)
根据另一个问题,可以通过在"选择语言"对话框中选择"写入"输出样式来更改DrRacket内部的输出样式.但是这需要DrRacket GUI; 有没有办法改变Racket REPL的这个设置?
背景:与SICP风格方案不同,Racket list是不可变的.要获得可变列表,请使用Racket mlist.什么#lang planet/neil/SICP(我猜)是(require mpair)然后重命名mlist为list.所以,当你写list的那个#lang,你实际使用mlist.
无论如何,mlist默认情况下,s打印方式不同.但是你可以改变两个参数.
(print-as-expression #f)
Run Code Online (Sandbox Code Playgroud)
现在它将打印为
{1 2 3 4}
Run Code Online (Sandbox Code Playgroud)
花括号而不是括号表示它是一个可变列表.要调整它,设置另一个参数:
(print-mpair-curly-braces #f)
Run Code Online (Sandbox Code Playgroud)
现在它应该打印为:
(1 2 3 4)
Run Code Online (Sandbox Code Playgroud)
要让普通的Racket REPL始终执行此操作,我认为您可以将这两个表达式放在Racket init文件中,例如~/.racketrc在OSX和Linux上.虽然我不确定Geiser提供的REPL是否读取了init文件,但如果你将这些表达式保留为Geiser REPL会话,那么你可以将它们放在某个.rkt文件中并访问它一次.