Rust语言实现Lisp解释器-MATLAB代码转换

需积分: 11 0 下载量 170 浏览量 更新于2024-11-25 收藏 1.34MB ZIP 举报
资源摘要信息:"MATLAB典型环节代码-mal_in_rust:这是我在Rust中制作Lisp的实现" 知识点: 1. Rust语言:Rust是一种系统编程语言,注重安全性,尤其是并发安全性。它为底层系统开发而设计,同时也提供了现代语言的便利,例如内存安全不需要垃圾回收器(garbage collector),并且能够提供高性能。 2. Lisp语言:Lisp(List Processing)是一种高级编程语言,以其简洁的语法和强大的表达能力而闻名。它采用前缀表达式,并且支持函数式编程范式。Lisp的语法通常由括号和列表组成,这使得代码具有极高的灵活性和可塑性。 3. MAL项目:MAL(Make a Lisp)是一个项目,旨在通过实现一个Lisp解释器来教育人们关于编程语言设计和实现的基本概念。MAL项目鼓励学习者通过11个增量步骤来实现一个Lisp解释器,每一步都构建在前一步之上,并且每一步都是自包含且可测试的。 4. 编程语言的实现:一个编程语言的实现可以包括编译器、解释器或转译器。解释器直接执行源代码,而编译器将源代码转换成另一种语言(通常是机器代码)。转译器通常指的是将一种高级语言转换成另一种高级语言。 5. Clojure语言:Clojure是一种现代的Lisp方言,运行在Java虚拟机(JVM)上。它由Rich Hickey开发,并且以其并发模型和对不可变数据结构的支持而受到赞誉。 6. Lisp的多样性实现:MAL项目表明有82种语言的Lisp实现,包括Clojure、ECMAScript 2015、Python、C++和JS等。这显示了Lisp语言的跨语言魅力和灵活性。 7. GNU Octave和MATLAB:GNU Octave和MATLAB是数值计算和工程领域的科学计算软件。MAL项目能够在这两种软件环境中实现,说明了Lisp语言概念的通用性和可移植性。 8. 开源:该项目属于开源类别,意味着它的源代码对所有用户公开,并且用户可以自由地使用、修改和分享源代码。开源项目通常通过像GitHub这样的平台进行协作开发和版本控制。 9. Rust与其他语言的比较:MAL项目展示了Rust与其他语言实现Lisp的能力,包括C64和QBasic,这强调了Rust在各种编程环境中的适用性和潜力。 10. 项目社区:该项目鼓励有兴趣的开发者通过freenode的#mal频道进行交流,并且项目制作者会参与讨论并回答问题,这为学习者提供了一个交流和解决问题的平台。 11. 学习工具:MAL项目不仅是一个编程语言实现,它还被用作学习工具,旨在帮助开发者通过实际操作来理解编程语言设计的核心概念。 12. 自我托管:在MAL项目的最后一步中,Lisp解释器能够运行自己的MAL实现。这一步骤验证了实现的自我支持和完备性。 13. 项目进度可视化:MAL项目每个步骤都有体系结构图,而且新增元素以红色突出显示,帮助学习者更直观地理解项目发展的进度和变更。 以上知识点展示了MAL项目的多个方面,包括编程语言的设计与实现、Rust语言的应用、开源社区的协作以及Lisp语言的跨平台特性。通过这些知识点,学习者可以对MAL项目有一个全面的认识,并且可以根据自己的兴趣进行深入的学习和实践。

import pandas as pd import datetime #将数据作存储并且设置前三列为合适的索引 df = pd.read_csv('wind.data',sep='\s+',parse_dates=[[0,1,2]]) #2061年?我们真的有这一年的数据?创建一个函数并用它去修复这个bug def fix_century(x): year = x.year - 100 if x.year>1999 else x.year return datetime.date(year,x.month,x.day) df['Yr_Mo_Dy'] = df['Yr_Mo_Dy'].apply(fix_century) #将日期设为索引,注意数据类型,应该是datetime64[ns] df['Yr_Mo_Dy'] = pd.to_datetime(df['Yr_Mo_Dy']) df = df.set_index('Yr_Mo_Dy') #对应每一个location,一共有多少数据值缺失 df.isnull().sum() #对应每一个location,一共有多少完整的数据值 df.shape[1] - df.isnull().sum() #对于全体数据,计算风速的平均值 df.mean().mean() #创建一个名为loc_stats的数据框去计算并存储每个location的风速最小值,最大值,平均值和标准差 loc_stats = pd.DataFrame() loc_stats['min'] = df.min() loc_stats['max'] = df.max() loc_stats['mean'] = df.mean() loc_stats['std'] = df.std() #创建一个名为day_stats的数据框去计算并存储所有天的风速最小值,最大值,平均值和标准差 day_stats = pd.DataFrame() day_stats['min'] = df.min(axis=1) day_stats['max'] = df.max(axis=1) day_stats['mean'] = df.mean(axis=1) day_stats['std'] = df.std(axis=1) #对于每一个location,计算一月份的平均风速 df['date'] = df.index df['year'] = df['date'].apply(lambda df: df.year) df['month'] = df['date'].apply(lambda df: df.month) df['day'] = df['date'].apply(lambda df: df.day) january_winds = df.query('month ==1') #query等同于df[df.month==1] january_winds.loc[:,'RPT':'MAL'].mean() #对于数据记录按照年为频率取样 df.query('month ==1 and day == 1') #对于数据记录按照月为频率取样 df.query('day == 1')

2023-06-08 上传