基于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

Lexical Scoping and Dynamic Scoping

我相信每一位程序员在学习或者实践编程时,都会遇到作用域的问题。您可能觉得作用域很简单,甚至都不能当做一个问题来看待,我想原因可能是目前主流的计算机语言Java, Python, C等等几乎一致采用Lexical Scoping,程序员没有机会察觉到异样,从而掩盖了还有其他作用域的事实,许多教科书也很配合地一笔带过,当然还有一种可能是您已经洞察了不同作用域的差异和内涵,自觉地规避了问题。我衷心的希望所有程序员都是第二种可能。 ...

九月 23, 2020

快速排序(Lisp版本)

快速排序是一种常见的排序手段,由C.A.R.Hoare在1960年提出。其基本思路为: 设定一个分界值,通常为第一个元素; 遍历列表,将所有小于分界值的元素集中到列表的左侧,所有大于或等于分界值的元素集中到右侧; ...

七月 20, 2020

从“八皇后”到amb

讲故事并不是我擅长的事情,不过事情总有一个开始,诸位看官莫嫌我絮烦,只是希望可以讲述的更有条理一些。某日正读一本关于Erlang的书,书中出了一个关于八皇后的题目,这是计算机科学中经典的问题,当年上学时曾绞尽脑汁仍然云山雾罩,不得其解。如今再次相遇,岂能再坐壁上观?!更何况手边已有趁手的兵器。试看Erlang的实现: ...

五月 23, 2020

[译]BEAM vs JVM

作者是 Francesco Cesarini & Gabor Olah 任何编程语言在Erlang生态系统中的成功都可以分为三个紧密耦合的组件。它们是: 1)Erlang编程语言的语义,并在其上实现其他语言 2)用于构建可伸缩和弹性并发系统的OTP库和中间件,以及 3)与语言语义紧密耦合的BEAM虚拟机和OTP。 ...

五月 14, 2020

无重复字符的最长子串-Scheme实现

实现 下面将使用Scheme语言来实现“无重复字符的最长子串”,即,对于字符串"abbabcx",其最长无重复字符的子串为"abcx",长度4,详细描述可访问https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ ...

三月 12, 2020

使用Golang进行函数式编程

为什么要用Go练习函数式编程?简而言之,正是由于缺少状态和可变数据,函数式编程使您的代码更易读,更易于测试且不太复杂。如果遇到错误,只要不违反函数式编程规则,就可以快速调试应用程序。当函数被隔离时,您不必处理影响输出的隐藏状态的更改。 ...

三月 12, 2020

Scheme实现一个FIFO队列

闲来无事,用Scheme实现一个FIFO队列,数据从末端插入,从前端删除或者查询。 队列可以看成是由下面一组操作定义的结构: 构造函数 (make-queue) 返回一个空队列 ...

三月 6, 2020

兼容性(Compatibility Features in Chez Scheme)

本章介绍了当前版本的Chez Scheme中包含的几个项目,主要是为了与系统的较早版本兼容。由于兼容功能可能在未来会被放弃,所以新项目中应尽可能使用Scheme标准机制。 ...

二月 18, 2020

线程(Thread System in Chez Scheme)

下面介绍Chez Scheme线程系统过程和语法形式。 除了锁,锁增量和锁减量之外,线程系统的功能在非基于Windows的系统上在Posix线程系统(pthreads)之上实现,并在基于Windows的系统上直接使用Windows API。 有关线程创建和交互的基本详细信息,请查阅系统上的相应文档。 ...

二月 17, 2020