CommonLisp标识符统计

#Fortigate#LDAP 如何设置同步LDAP用户作为系统登录控制台的管理员账号 阅读详情

最近在尝试实现CommonLisp,想起CL的常用操作符car, cdr, defparameter之类,如果把它们改短些,输入时不就省事么?不过动手前先找准目标比较妥当,于是写了个Python脚本,统计ClozureCL、CLISP中出现的所有标识符,挑出排名靠前的看看。

# 统计CommonLisp实现中,最常用的标识符及其出现的频率

import string, os, sys, re;

def stat_file(file_path, dic):
  max_id_len = 0;
  fp = open(file_path);
  try:
    for line in fp.readlines():
      ids = re.findall("\w+[a-zA-Z0-9-_]*", line);
      for id in ids:
        l = len(id)
        if l > max_id_len:
          max_id_len = l
        dic[id] = dic.get(id,0) + 1;
  except:
    None
  return max_id_len

base_dirs = ["C:\wz\greenware\ccl-1.7" , "C:\wz\greenware\clisp-2.49"]

dic_id_cnt = {}
max_id_len = 0

for base_dir in base_dirs:
  for root, dirs, files in os.walk(base_dir):
    for file_name in files:
      if re.match(".*\.lisp$", file_name) != None and re.search("\.svn", file_name) == None:
        file_path = os.path.join(root, file_name)
        print(file_path);
        tm = stat_file(file_path, dic_id_cnt);
        if tm > max_id_len:
          max_id_len = tm

ml = max_id_len + 1
tuples = sorted(dic_id_cnt.items(), key=lambda d:(99999999 - d[1]));
n = 0
for e in tuples:
  print(e[0].ljust(20) + str(e[1]).rjust(8)); # 虽计算了最长标识,但前100位都较短
  n += 1
  if n > 100:
    break;

#exit();


结果和空想的完全不同——七个核心操作符并不是最热的(如果冒然改解析器就亏大了):

the                    25622
if                     17399
let                    15485
nil                    14565
and                    12769
0                      12449
defun                  11855
a                      11716
t                      10312
is                      9790
1                       9649
of                      9405
to                      9294
when                    8918
or                      7997
setf                    7791
setq                    7688
name                    7195
s                       6686
in                      6640
i                       6408
declare                 5964
eq                      5714
not                     5586
x                       5573
type                    5558
fixnum                  5395
form                    5379
seg                     4996
stream                  4905
list                    4836
for                     4668
string                  4334
unless                  4329
dest                    4043
car                     4009
value                   3975
imm0                    3949
n                       3657
2                       3598
p                       3594
l                       3582
target                  3580
buffer                  3478
u                       3421
be                      3409
that                    3403
cdr                     3395
class                   3301
start                   3288
as                      3249
arg_z                   3245
S                       3155
end                     3130
ppc                     3093
args                    2991
values                  2970
key                     2948
it                      2947
length                  2783
return                  2777
with                    2753
src                     2745
vreg                    2736
logior                  2722
null                    2701
function                2678
error                   2650
index                   2639
The                     2603
object                  2578
val                     2566
file                    2522
code                    2507
do                      2500
arm                     2475
4                       2468
this                    2407
eql                     2401
rest                    2397
ash                     2394
optional                2366
progn                   2360
format                  2343
y                       2342
x8664                   2339
b                       2310
cond                    2277
8                       2274
body                    2243
apply                   2235
line                    2221
vector                  2218
result                  2209
lambda                  2199
are                     2198
3                       2197
idx                     2188
lisp                    2161
defconstant             2128
x8632                   2121


Common Lisp 概览 先说一说我对Common Lisp函数式编程语言的个人理解, 首先函数分为:声明,定义和调用。 在c语言中,.h文件 实现函数的声明,.c文件 实现函数的定义。 而在Common List中,函数的声明和定义结合在一起,例如 (defun sum (alist) ...)defun为函数声明的关键字,sum为函数名,alist为函数参数。 (sum alist)上述代码为函数调用的代码 阅读详情

相关推荐

Common Lisp学习资源:练习与解决方案大全

本文还有配套的精品资源,点击获取 简介:Common Lisp是一种历史悠久且应用广泛的编程语言,以其独特的语法、灵活性和强大的宏系统而知名。这个项目“learninglisp”提供了丰富的练习和解决方案,帮助学习者逐步掌握Lisp编程。项目内容包括S表达式的使用,符号计算的能力,以及一系列教程、练习题目、解决方案、测试脚本、代码片段和阅读材料。通过这些资源,学习者可以深入...

weixin_36369848的博客 1364

教程篇(7.0) 05. FortiGate安全 & 防火墙认证 ❀ Fortinet 网络安全专家 NSE 4

在本课中,你将学习如何在FortiGate的防火墙策略中使用身份验证。

防火墙技术专栏 4269

Common Lisp基础WEB应用教程:BBS论坛系统实践

本文还有配套的精品资源,点击获取 简介:cl-webapp-sample 是一个基于 Common Lisp 的 Web 应用示例,实现了一个基础的论坛(BBS)功能,为学习者提供了学习 Common Lisp Web 开发的实践案例。项目包括使用说明、安装指南、作者信息及版权声明。同时,项目的构建和运行可能涉及到 JavaScript 以增强前端交互,且可能使用 Git ...

weixin_31176789的博客 1806

教程篇(7.2) 04. 防火墙身份验证 & FortiGate安全 ❀ Fortinet网络安全专家 NSE4

在本节课中,你将学习如何在FortiGate的防火墙策略上使用身份验证。

防火墙技术专栏 3656

Common Lisp语言,第二版Common Lisp the Language, 2nd Edition

Lisp程序员的圣经。 每个官方规范,Common Lisp中定义的每个功能都可以在此处找到。

CANOE DIVA 工程怎样在具体服务前增加前置条件

然后会在CANoe的Test Module视窗中发现一个跟系统条件相关的Test Module模块,在该模块中有生成跟系统条件相关的CAPL 脚本。这里需要根据你的实际项目进行更改,diva工程加载到canoe的工程的时候,会同步加入你创建的cdd文件,这里示例的ABS_ESP 就是你的cdd的ECU命名,后面就是具体的前置条件服务。4、配置完成后,测试用例就会如下图Trace窗口所示,在每一次10 02请求之前都会调用CAPL Function的PreconditionCheck函数中定义的脚本。

weixin_45940007的博客 1963

Common Lisp之小试~

看了《黑客与画家》,对Lisp语言比较好奇,于是就弄了本《Lisp使用教程》,有空的时候就学习一下。Lisp的实现有很多,我用的Emacs+sbcl+slime,因为网上资料比较好找。跟着的前几章体验了一下,先记录一下: 在slime中,你会看到 CL-USER> 敲入命令,只要合乎Lisp语法,便会马上得到执行。 在Lisp中,这个过程叫做read-ev...

weixin_30552811的博客 304

PRIDE数据库20年:2025更新

PRoteomics IDEntifications (PRIDE)数据库(https://www.ebi.ac.uk/pride/)是全球领先的基于质谱(MS)的蛋白质组学数据存储库,也是ProteomeXchange联盟的创始成员之一。本文总结了过去3年中PRIDE资源及相关工具的发展情况。提交到PRIDE存档的数据集数量平均每月达到约534个。主要得益于基础设施的持续改进,如用于超大数据集的新文件传输协议(Globus)、新的数据重新提交流程以及自动数据集验证过程。

多组・学・多组学 2062

Common Lisp 初学者快速入门指导

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33981932的博客 634

从时序参数到电压供给:TTL(RGB)液晶屏驱动调试全解析

本文全面解析TTL(RGB)液晶屏驱动调试的关键技术,从时序参数配置到电压供给系统搭建,详细介绍了同步信号参数、寄存器配置技巧以及升压电路设计。通过实战案例和常见故障分析,帮助工程师快速掌握液晶显示屏调试方法,提升开发效率。

weixin_30588675的博客 247

基于ResNet-50的猫狗分类训练

基于ResNet-50的猫狗分类python训练

weixin_46352497的博客 1004

Common Lisp

 Common Lisp 来自 维客 Jump to: navigation, search Common Lisp,一般缩写为 CL(不要和缩写同为CL的組合邏輯混淆),是Lisp的方言,标准由ANSI X3.226-1994定义。它是为了标准化此前众多的Lisp分支而开发的,它本身并不是一个具体的实现而是各个Li

skyremember的专栏 3367

eMMC数据擦除的方式

接下来主要是讲解erase、trim、discard的差异,涉及的command有CMD35、CMD36、CMD38。一般用来擦除整卡或者某些分区,如果只想擦除一个。以下是device status的部分解释。eMMC的数据擦除方式有6种,分别是。将会跳过写保护,只执行其他的范围。Discard的命令序列是。Erase的命令序列是。的范围有包含写保护,Trim的命令序列是。

DPJimmy的博客 1763

Common Lisp入门笔记(一)7个基本运算符

表达式实例: >(+ 1 2) >3 Common Lisp表达式求值规则是: 首先对每个参数从左到右进行求值; 其次将这些已经求值的参数作为运算符函数的参数进行函数调用求值; 所求得的值作为表达式的值返回。 一、Lisp的数据类型 Lisp有其它语言的一切类型,还提供另外其它语言没有两种类型: symbol(符号)和 list(表)。 (1)符号显示时总是被转换为大写。一般

6264

DVWA靶场实战:手把手教你绕过文件上传限制,用蚁剑连接一句话木马

本文详细介绍了在DVWA靶场中如何绕过文件上传限制并利用蚁剑连接一句话木马的实战技巧。通过分析文件上传漏洞原理、创建一句话木马、使用Burp Suite拦截修改请求以及配置蚁剑连接WebShell的全过程,帮助安全研究人员深入理解Web安全防护与攻击技术。

weixin_30335575的博客 90

英飞凌TC3xx之一起认识GTM系列(六)如何实现GTM与VADC关联的配置

本文给出了GTM与EVADC之间关联的细节,并通过两个实例分别说明了如何对寄存器进行配置。

无所适从的我的博客 2932

Common Lisp编程初步---环境搭建和外部lisp代码运行

1 介绍Lisp是世界上第二古老的语言,第一古老语言是Fortran。Lisp语言的创立者为John McCarthy,一位人工智能领域里的先驱。该语言自创立以来经历了50多年而不衰,是一种很有生命力的语言。该语言的发展和使用与CMU和MIT两所高校密不可分,在相当长的时期内是这两所高校的大学计算机课程指定语言。在该语言创立之初,除了创建者外,还有其他的一些高校著名学者也参与到了Lisp语言的发展完

陈广智的专栏 1万+

C#串口通信从入门到精通(7)——整数/浮点数与二进制、八进制、十六进制之间的转换与C#实现

本文详细介绍由博主开发的DataConvert串口通信帮助类的用法,该帮助类涵盖了串口通信领域所有的数据转换方法,帮助大家快速编写串口通信程序!

qq_34059233的博客 2879

HTTPS

加密是一种将明文(原始数据或信息)经过一系列变换生成密文的过程,而解密则是将密文再经过相应的变换还原成明文的过程。在这个过程中,通常需要使用一个或多个中间的数据,这些数据称为密钥。加密过程:原始的、未经加密的数据称为明文。使用特定的加密算法对明文进行变换,产生密文。加密算法通常需要一个密钥,这个密钥是用来影响加密算法行为的参数。解密过程:经过加密得到的数据称为密文。使用相应的解密算法对密文进行变换,还原成明文。解密算法通常也需要使用与加密时相同的密钥。

qq_66483104的博客 1247

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

让我们一起读一张证书吧!

读一张百度的证书。 序列号 序列号用于标识唯一一张证书,其值由CA选择,CA只要选择他们觉得合适的值就好。 颁发者(链接) CN: CommonName OU: OrganizationalUnit O: Organization L: Locality S: StateOrProvinceName C: CountryName 使用时间 使用者 公钥 公钥参数 “公钥参数”字段的最重要用途是在ECDSA证书中。如果是RSA,就是null。 授权信息访问 Authority Info Ac.

Sunny_Ducky的博客 2553

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

两个有助于理解Common Lisp宏的例子

两个有助于理解Common Lisp宏的例子

Alexabc3000的专栏 592

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

什么是公用名Common Name

公用名Common Name 本文转自[记录无限:www.gluoo.cn]. 公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain)。   例1:打算为“chinassl.net”申请SSL证 书,那这个公用名(Common Name)就要填写“chinassl.net”,而不能填写 “www.ch

lz7955823的专栏 1万+

函数编程之Common Lisp

Common Lisp,缩写为CL(不要和缩写同为CL的组合逻辑混淆),作为Lisp的众多方言之一,由ANSI X3.226-1994(R1999)定义标准。它是为了标准化此前众多的Lisp分支而开发的,其本身并不是一个具体的实现,而是语言规范。市面上既有自由软件开源软件的实现,也有专有软件的实现。 相对于各种嵌入在特定产品中的语言Emacs Lisp和AutoLISP,Common L

站在巨人的肩膀上学习 3553

common lisp 安装和使用第三方包

就slime 安装有两个做法, 一个通过sbcl load quicklisp, 一个通过emacs M-x list-packages。 发现当sbcl卸载后slime不行了,重新又搞了一遍,还是quicklisp好用些。 lisp本身要放到环境中才能发挥威力。如果说emacs比vim的优势,就是emacs使用的elisp,更容易扩展。 vim 的语法高亮做的太过了,以致于导致文本本身的标

deyangliu的专栏 3872
上一篇: 100楼,2只鸡蛋
下一篇: 小BUG:OpenGL无法清屏
CodeArhat
博客等级 码龄15年 13粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值