低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

Racket 6.1 发布

2014 年 8 月 11 日

PLT Design 公司发布了 Racket 的 6.1 版,Racket 是一种通用的、属于 Lisp/Scheme 家族的多范式编程语言。Racket 6.1 引入了一种用于处理局部递归变量定义的新方式,以及其他一些新的语言特性。

Racket-lang.org 上的 Ryan Culpepper 认为,在 Racket v6.1 的新功能中,最主要的创新要数对局部递归变量定义进行处理的新方式。在 6.1 版之前,变量的值都被初始化为#undefined。而现在 ,变量不会被初始化为任何值,当你尝试在某个变量定义之前访问该变量时,Racket 会抛出一个异常。Ryan 补充到,由于这样一来程序便很少会产生#undefined,这一变化的目的是为了告诉开发者不应该由于对某个变量的使用不恰当而无意中修改某个程序的语义,从而较早地为开发者提供了有关这方面的改进反馈;除此之外,这种新的行为将与模块级变量现有的约定保持一致,即在变量定义前访问变量时会抛出异常。

新的局部变量定义行为并不向后兼容,它会阻断任何对未定义变量进行不恰当访问的程序,以及像包含如下这一类获取#undefined 值的代码的程序:

复制代码
(define undefined (letrec ([x x]) x))

对于现在而言,正确获取#undefined 值的方式需要通过 racket/undefined 库。

Racket 新版引入的一些其他方面的变化如下所示:

  • Plumbers 为程序员们提供了更多在时间上对 flush 的控制,允许我们通过一个新的函数集来执行任意的 flushing 操作,例如 current-plumber、plumber-add-flush! 和 plumber-flush-all。
  • Contracts 可以很容易地从约定的数据结构实现中找出简单的错误(举个例子,由于不小心,而在堆的不变式检查中写反了某个条件)。
  • 图形库及其依赖(Pango、Cairo 和 Glib 等)在 Windows 和 Mac OS X 上都得到了升级。
  • Openssl 库通过 DHE 和 ECDHE 加密套件支持正向加密以及服务器名字指示 (Server Name Indication)。
  • mzlib/class100 库已由 racket/class 库替代。

Racket(曾经的名字叫做 PLT Scheme)是一门自由通用的、属于 Lisp/Scheme 家族的多范式编程语言,它基于 LGPL 许可证发布。该语言的设计目标之一便是为语言的创建、设计和实现提供一个平台。该语言被用于各种不同的领域,例如脚本、通用编程、计算机科学教育以及科学研究。

查看英文原文: Racket 6.1 Released

2014 年 8 月 11 日 22:121154
用户头像

发布了 52 篇内容, 共 20.1 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

架构师训练营第 1 期第一次作业

Geek_a01290

极客大学架构师训练营

智能商业时代的思考(三)数据驱动

刘旭东

大数据 数据驱动 智能商业

Golang 反射性能优化

余歌

go 性能优化

收藏手册:Docker安装RabbitMQ,只需3步

互联网应用架构

Docker RabbitMQ

第二周 - 框架设计

Arthur云剑

Java新特性:数据类型可以扔掉了?

王磊

Java 新特性 Java新特性 var 局部类型推导

超全面分布式缓存高可用方案:哨兵机制

架构精进之路

redis哨兵模式

RDS、DDS和GaussDB理不清?看这一篇足够了!

华为云开发者社区

数据库 华为云 RDS

JavaScript原型机制

Clloz

Java 原型

高难度对话读书笔记

wo是一棵草

早知道这 8 个锦囊,我的程序人生一定更精彩

沉默王二

程序员 程序员趣事

深入理解JVM垃圾回收算法 - 标记清理算法

WANDEFOUR

GC算法 标记清理 位图标记 懒惰标记

腾讯PCG数据中台专场介绍&招聘报名

腾讯PCG招聘

数据中台 腾讯 招聘

拆分链表、图解HTTPS、Zookeeper原理、如何成为技术专家、架构师三板斧 John 易筋 ARTS 打卡 Week 18

John(易筋)

ARTS 打卡计划 图解https ZooKeeper原理 架构师三板斧 拆分链表

架构师训练营第 1 期第一周总结

Geek_a01290

极客大学架构师训练营

oeasy 教您玩转linux 010303文件管理器 nautilus

o

从linux源码看socket的阻塞和非阻塞

无毁的湖光

Linux TCP socket Linux Kenel

科大讯飞再握一国产核心技术,可高精细拾取30分贝超小音量

Talk A.I.

Apache Doris 在 WeLab实时大数据平台的应用实践

DorisDB

数据库 数据仓库 OLAP 实时数据分析 实时大数据平台

我的 2020 iOS BAT面试心得:Bigo、字节、快手、伴鱼、百度、微博等

iOSer

ios 面试 面试题 大厂面试 面试经历

Golang框架探索(一)

余歌

Web框架 Go web

高效程序员的45个习惯:敏捷开发修炼之道(8)

石云升

敏捷开发 技术分享 轮换制

java安全编码指南之:输入校验

程序那些事

java安全编码 安全编码规范 java安全编码指南

使用递增计数器的线程同步工具 —— 信号量,它的原理是什么样子的?

程序员小航

Java 源码 源码阅读 JUC Semaphore

架构设计:微服务架构如何划分?这6个标准原则让你一目了然

互联网应用架构

微服务 微服务架构 微服务冶理 架构设计 微服务划分

架构师训练营第一周课程笔记及心得

Airs

程序员为什么热衷于造轮子,升职加薪吗?

小傅哥

Java 小傅哥 代码质量 编程开发 编程经验

大作业2

雪涛公子

信任环:口碑传播的关键环节

boshi

用户增长 运营创新

Java ConcurrentHashMap 高并发安全实现原理解析

vivo互联网技术

Java hashmap 多线程 高并发

rpc探路(一)

余歌

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

Racket 6.1发布-InfoQ