不到60行代码,用Racket实现wc命令

Racket语言开发命令行程序十分简单,而且支持跨平台编译,我们可以用它来开发各种方便的工具程序。下面实现了一个完整的wc程序,只需50多行代码就完成了。 ...

八月 9, 2021

改进Racket的time函数

Racket和Chez Scheme一样都有time函数,用来打印函数的执行时间,所不同的地方在于,Chez Scheme的time函数会把分配的字节数也显示出来,这对于我们调试和优化代码很有帮助,不过Matthew Flatt并没有打算将Racket的time函数添加这一功能,尽管如此,Matthew Flatt提供了一个思路,只是稍微麻烦一些。 ...

七月 22, 2021

Racket 并发与同步

Threads 创建一个新线程: (thread (lambda() (displayln "This is a new thread"))) 休眠线程并且杀掉: (define worker (thread (lambda () (let loop () (displayln "Working...") (sleep 0.2) (loop))))) (sleep 2.5) (kill-thread worker) 如果主线程退出或者被杀掉,其子线程也面临着退出, 可以利用therad-wait来等待其他线程执行完成. ...

七月 8, 2021

Racket Modules

模块基础 一个模块可以被另一个模块使用,但是模块内部的变量不能直接修改,即set! 通常,每个Racket模块驻留在自己的文件中,换句话说,可以认为一个.rkt 文件里的内容属于某一个模块,模块名就是文件名。 ...

七月 8, 2021

【盛最多水的容器】问题的求解

这是一个leet code出现的问题: 给 n 个非负整数 $a_1$,$a_2$,…,$a_n$,每个数代表坐标中的一个点(i, $a_i$) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i, $a_i$) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 ...

五月 11, 2021

基于Chez Scheme重建Racket

作者 MATTHEW FLATT, University of Utah, USACANER DERICI, Indiana University, USA R. KENT DYBVIG, Cisco Systems, Inc., USA ANDREW W. KEEP, Cisco Systems, Inc., USA GUSTAVO E. MASSACCESI, Universidad de Buenos Aires, Argentina SARAH SPALL, Indiana University, USA SAM TOBIN-HOCHSTADT, Indiana University, USA ...

十月 20, 2020